X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/cb3231590a3c94ab4375e2228bd5e86b0cf1ad7e..94ff46dc2849db4d43eaaf144872decc522aafb4:/bsd/kern/uipc_syscalls.c?ds=sidebyside diff --git a/bsd/kern/uipc_syscalls.c b/bsd/kern/uipc_syscalls.c index b903e4a18..ca5e7dd6e 100644 --- a/bsd/kern/uipc_syscalls.c +++ b/bsd/kern/uipc_syscalls.c @@ -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;