]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/sysv_sem.c
xnu-1228.15.4.tar.gz
[apple/xnu.git] / bsd / kern / sysv_sem.c
index d244876ab88de0950eee862cce3d07314b99828a..6c90d6485563a85cb622a96e4166e96f6d949ec3 100644 (file)
@@ -1046,6 +1046,14 @@ semop(struct proc *p, struct semop_args *uap, register_t *retval)
                goto semopout;
        }
 
+       if (nsops < 0 || nsops > MAX_SOPS) {
+#ifdef SEM_DEBUG
+               printf("too many sops (max=%d, nsops=%d)\n", MAX_SOPS, nsops);
+#endif
+               eval = E2BIG;
+               goto semopout;
+       }
+
 #if CONFIG_MACF
        /*
         * Initial pass thru sops to see what permissions are needed.
@@ -1064,14 +1072,6 @@ semop(struct proc *p, struct semop_args *uap, register_t *retval)
                goto semopout;
 #endif
 
-       if (nsops < 0 || nsops > MAX_SOPS) {
-#ifdef SEM_DEBUG
-               printf("too many sops (max=%d, nsops=%d)\n", MAX_SOPS, nsops);
-#endif
-               eval = E2BIG;
-               goto semopout;
-       }
-
        /*  OK for LP64, since sizeof(struct sembuf) is currently invariant */
        if ((eval = copyin(uap->sops, &sops, nsops * sizeof(struct sembuf))) != 0) {
 #ifdef SEM_DEBUG