summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_alq.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2003-10-25 16:10:41 +0000
committerrwatson <rwatson@FreeBSD.org>2003-10-25 16:10:41 +0000
commit723804b2614efedcd5f10e95ad05af6ddba47258 (patch)
tree5d653c0acb918cea130a348874e61f9ecc2fc5ce /sys/kern/kern_alq.c
parent2e83725f4a390d62e44488987ceae30617d39f03 (diff)
downloadFreeBSD-src-723804b2614efedcd5f10e95ad05af6ddba47258.zip
FreeBSD-src-723804b2614efedcd5f10e95ad05af6ddba47258.tar.gz
Allow MAC policies to block/revoke kern_alq write access to a file.
Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories Reviewed by: jeff
Diffstat (limited to 'sys/kern/kern_alq.c')
-rw-r--r--sys/kern/kern_alq.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/kern/kern_alq.c b/sys/kern/kern_alq.c
index 9613641..399b7d1 100644
--- a/sys/kern/kern_alq.c
+++ b/sys/kern/kern_alq.c
@@ -27,11 +27,14 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include "opt_mac.h"
+
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
#include <sys/lock.h>
+#include <sys/mac.h>
#include <sys/mutex.h>
#include <sys/namei.h>
#include <sys/proc.h>
@@ -291,8 +294,13 @@ alq_doio(struct alq *alq)
vn_start_write(vp, &mp, V_WAIT);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, td);
VOP_LEASE(vp, td, alq->aq_cred, LEASE_WRITE);
- /* XXX error ignored */
- VOP_WRITE(vp, &auio, IO_UNIT | IO_APPEND, alq->aq_cred);
+ /*
+ * XXX: VOP_WRITE error checks are ignored.
+ */
+#ifdef MAC
+ if (mac_check_vnode_write(alq->aq_cred, NOCRED, vp) == 0)
+#endif
+ VOP_WRITE(vp, &auio, IO_UNIT | IO_APPEND, alq->aq_cred);
VOP_UNLOCK(vp, 0, td);
vn_finished_write(mp);
OpenPOWER on IntegriCloud