Module Name: src Committed By: elad Date: Fri Jul 3 21:32:09 UTC 2009
Modified Files: src/sys/kern: sys_mqueue.c Log Message: Message queues also use genfs_can_access() to control access. Since the latter might lose its KAUTH_GENERIC_ISSUSER check soon, add an internal function, mqueue_access(), and call genfs_can_access() from it instead so we don't pollute the main code path once we need to add a special kauth(9) check for message queues. No functional change, error codes preserved. Related mailing list thread: http://mail-index.netbsd.org/tech-kern/2009/06/21/msg005311.html To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/sys/kern/sys_mqueue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/sys_mqueue.c diff -u src/sys/kern/sys_mqueue.c:1.19 src/sys/kern/sys_mqueue.c:1.20 --- src/sys/kern/sys_mqueue.c:1.19 Tue Jun 23 19:36:38 2009 +++ src/sys/kern/sys_mqueue.c Fri Jul 3 21:32:09 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_mqueue.c,v 1.19 2009/06/23 19:36:38 elad Exp $ */ +/* $NetBSD: sys_mqueue.c,v 1.20 2009/07/03 21:32:09 elad Exp $ */ /* * Copyright (c) 2007, 2008 Mindaugas Rasiukevicius <rmind at NetBSD org> @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_mqueue.c,v 1.19 2009/06/23 19:36:38 elad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_mqueue.c,v 1.20 2009/07/03 21:32:09 elad Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -295,6 +295,17 @@ return 0; } +static int +mqueue_access(struct mqueue *mq, mode_t mode, kauth_cred_t cred) +{ + if (genfs_can_access(VNON, mq->mq_mode, mq->mq_euid, + mq->mq_egid, mode, cred)) { + return EACCES; + } + + return 0; +} + /* * General mqueue system calls. */ @@ -430,8 +441,7 @@ if (fp->f_flag & FWRITE) { acc_mode |= VWRITE; } - if (genfs_can_access(VNON, mq->mq_mode, mq->mq_euid, - mq->mq_egid, acc_mode, l->l_cred)) { + if (mqueue_access(mq, acc_mode, l->l_cred) != 0) { error = EACCES; goto exit; }