]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/sysv_ipc.c
xnu-1504.9.17.tar.gz
[apple/xnu.git] / bsd / kern / sysv_ipc.c
index a47e59f2040b62109b678d695472966ecf6bfc48..95c23d418efb580d09459b9b0e3d319b5e31eac3 100644 (file)
  * 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);
 }