diff options
author | rwatson <rwatson@FreeBSD.org> | 2001-11-01 20:56:57 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2001-11-01 20:56:57 +0000 |
commit | c532c3bf88b0296935bf9293accb407de43e240c (patch) | |
tree | d29ed0901454dffcc55e4c0606aef0cd915d84eb /sys/kern/sysv_ipc.c | |
parent | 49a98043879675541ed4fda938748b3b157c8479 (diff) | |
download | FreeBSD-src-c532c3bf88b0296935bf9293accb407de43e240c.zip FreeBSD-src-c532c3bf88b0296935bf9293accb407de43e240c.tar.gz |
o Move suser() calls in kern/ to using suser_xxx() with an explicit
credential selection, rather than reference via a thread or process
pointer. This is part of a gradual migration to suser() accepting
a struct ucred instead of a struct proc, simplifying the reference
and locking semantics of suser().
Obtained from: TrustedBSD Project
Diffstat (limited to 'sys/kern/sysv_ipc.c')
-rw-r--r-- | sys/kern/sysv_ipc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/sysv_ipc.c b/sys/kern/sysv_ipc.c index 70e2f4b..89ab7d2 100644 --- a/sys/kern/sysv_ipc.c +++ b/sys/kern/sysv_ipc.c @@ -94,7 +94,8 @@ ipcperm(td, perm, mode) /* Check for user match. */ if (cred->cr_uid != perm->cuid && cred->cr_uid != perm->uid) { if (mode & IPC_M) - return (suser(p) == 0 ? 0 : EPERM); + return (suser_xxx(p->p_ucred, NULL, 0) == 0 ? 0 : + EPERM); /* Check for group match. */ mode >>= 3; if (!groupmember(perm->gid, cred) && @@ -105,5 +106,6 @@ ipcperm(td, perm, mode) if (mode & IPC_M) return (0); - return ((mode & perm->mode) == mode || suser(p) == 0 ? 0 : EACCES); + return ((mode & perm->mode) == mode || + suser_xxx(p->p_ucred, NULL, 0) == 0 ? 0 : EACCES); } |