summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2005-10-04 16:40:20 +0000
committerrwatson <rwatson@FreeBSD.org>2005-10-04 16:40:20 +0000
commit540563ab582bc0f804ccd1c410799c5f4882ba99 (patch)
tree21edea6178f54b287506c539ced4dca55fe01b5b /sys
parent6d1f0bd5550940a0a67a111b6ac792368c5f8552 (diff)
downloadFreeBSD-src-540563ab582bc0f804ccd1c410799c5f4882ba99.zip
FreeBSD-src-540563ab582bc0f804ccd1c410799c5f4882ba99.tar.gz
Re-order MAC and DAC checks in shmget() in order to give precedence to
the MAC result, as well as avoid losing the DAC check result when MAC is enabled. MFC after: 3 days Reported by: Patrick LeBlanc <Patrick dot LeBlanc at sparta dot com>
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/sysv_shm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c
index 637beb1..c52f79d 100644
--- a/sys/kern/sysv_shm.c
+++ b/sys/kern/sysv_shm.c
@@ -726,12 +726,14 @@ shmget_existing(td, uap, mode, segnum)
}
if ((uap->shmflg & (IPC_CREAT | IPC_EXCL)) == (IPC_CREAT | IPC_EXCL))
return (EEXIST);
- error = ipcperm(td, &shmseg->u.shm_perm, mode);
#ifdef MAC
error = mac_check_sysv_shmget(td->td_ucred, shmseg, uap->shmflg);
- if (error != 0)
+ if (error != 0) {
MPRINTF(("mac_check_sysv_shmget returned %d\n", error));
+ return (error);
+ }
#endif
+ error = ipcperm(td, &shmseg->u.shm_perm, mode);
if (error)
return (error);
if (uap->size && uap->size > shmseg->u.shm_segsz)
OpenPOWER on IntegriCloud