]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/uipc_syscalls.c
xnu-6153.41.3.tar.gz
[apple/xnu.git] / bsd / kern / uipc_syscalls.c
index b903e4a18932055b92d7c1d49ebb0627b08ae3d6..ca5e7dd6e8e17768124c2da4c6d986ff2819c48e 100644 (file)
@@ -1390,6 +1390,11 @@ sendto_nocancel(struct proc *p,
        KERNEL_DEBUG(DBG_FNC_SENDTO | DBG_FUNC_START, 0, 0, 0, 0, 0);
        AUDIT_ARG(fd, uap->s);
 
+       if (uap->flags & MSG_SKIPCFIL) {
+               error = EPERM;
+               goto done;
+       }
+
        auio = uio_create(1, 0,
            (IS_64BIT_PROCESS(p) ? UIO_USERSPACE64 : UIO_USERSPACE32),
            UIO_WRITE);
@@ -1459,6 +1464,12 @@ sendmsg_nocancel(struct proc *p, struct sendmsg_nocancel_args *uap,
 
        KERNEL_DEBUG(DBG_FNC_SENDMSG | DBG_FUNC_START, 0, 0, 0, 0, 0);
        AUDIT_ARG(fd, uap->s);
+
+       if (uap->flags & MSG_SKIPCFIL) {
+               error = EPERM;
+               goto done;
+       }
+
        if (IS_64BIT_PROCESS(p)) {
                msghdrp = (caddr_t)&msg64;
                size_of_msghdr = sizeof(msg64);
@@ -1572,6 +1583,11 @@ sendmsg_x(struct proc *p, struct sendmsg_x_args *uap, user_ssize_t *retval)
 
        KERNEL_DEBUG(DBG_FNC_SENDMSG_X | DBG_FUNC_START, 0, 0, 0, 0, 0);
 
+       if (uap->flags & MSG_SKIPCFIL) {
+               error = EPERM;
+               goto out;
+       }
+
        error = file_socket(uap->s, &so);
        if (error) {
                goto out;