diff options
author | imp <imp@FreeBSD.org> | 1999-08-02 21:34:46 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 1999-08-02 21:34:46 +0000 |
commit | b9c832cd1ff051f49e1ec48b7a38689a9b6d9fe4 (patch) | |
tree | 68e5418dbc54ac451b4d952d4c1d1914764d4d41 /sys/kern/vfs_syscalls.c | |
parent | 257891ab9f791bf4ad243b183a30572083606160 (diff) | |
download | FreeBSD-src-b9c832cd1ff051f49e1ec48b7a38689a9b6d9fe4.zip FreeBSD-src-b9c832cd1ff051f49e1ec48b7a38689a9b6d9fe4.tar.gz |
Only allow root to set file flags on devices.
Diffstat (limited to 'sys/kern/vfs_syscalls.c')
-rw-r--r-- | sys/kern/vfs_syscalls.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index e4333a6..a1674d8 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94 - * $Id: vfs_syscalls.c,v 1.124 1999/07/26 06:25:18 alc Exp $ + * $Id: vfs_syscalls.c,v 1.125 1999/07/29 17:02:56 green Exp $ */ /* For 4.3 integer FS ID compatibility */ @@ -1892,6 +1892,13 @@ setfflags(p, vp, flags) int error; struct vattr vattr; + if ((error = VOP_GETATTR(vp, &vattr, p->p_ucred, p))) + return error; + /* + * Don't allow setting of flags on devices for nonroot users + */ + if ((vattr.va_type == VCHR || vattr.va_type == VBLK) && suser(p)) + return 0; VOP_LEASE(vp, p, p->p_ucred, LEASE_WRITE); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, p); VATTR_NULL(&vattr); |