X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/8f6c56a50524aa785f7e596d52dddfb331e18961..593a1d5fd87cdf5b46dd5fcb84467b432cea0f91:/bsd/kern/sysv_ipc.c diff --git a/bsd/kern/sysv_ipc.c b/bsd/kern/sysv_ipc.c index a47e59f20..95c23d418 100644 --- a/bsd/kern/sysv_ipc.c +++ b/bsd/kern/sysv_ipc.c @@ -71,6 +71,11 @@ * XXX: proc->p_acflag to suser() */ +/* + * Returns: 0 Success + * EPERM + * EACCES + */ int ipcperm(kauth_cred_t cred, struct ipc_perm *perm, int mode) { @@ -87,12 +92,14 @@ ipcperm(kauth_cred_t cred, struct ipc_perm *perm, int mode) /* Check for group match. */ mode >>= 3; if ((kauth_cred_ismember_gid(cred, perm->gid, &is_member) || !is_member) && - (kauth_cred_ismember_gid(cred, perm->cgid, &is_member) || !is_member)) + (kauth_cred_ismember_gid(cred, perm->cgid, &is_member) || !is_member)) { /* Check for `other' match. */ mode >>= 3; } + } if (mode & IPC_M) return (0); + return ((mode & perm->mode) == mode ? 0 : EACCES); }