X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/cc8bc92ae4a8e9f1a1ab61bf83d34ad8150b3405..527f99514973766e9c0382a4d8550dfb00f54939:/bsd/kern/uipc_syscalls.c diff --git a/bsd/kern/uipc_syscalls.c b/bsd/kern/uipc_syscalls.c index 73c6ba447..eb2c9fa6a 100644 --- a/bsd/kern/uipc_syscalls.c +++ b/bsd/kern/uipc_syscalls.c @@ -90,6 +90,7 @@ #include #include #include +#include #include @@ -328,7 +329,8 @@ bind(__unused proc_t p, struct bind_args *uap, __unused int32_t *retval) goto out; AUDIT_ARG(sockaddr, vfs_context_cwd(vfs_context_current()), sa); #if CONFIG_MACF_SOCKET_SUBSET - if ((error = mac_socket_check_bind(kauth_cred_get(), so, sa)) == 0) + if ((sa != NULL && sa->sa_family == AF_SYSTEM) || + (error = mac_socket_check_bind(kauth_cred_get(), so, sa)) == 0) error = sobindlock(so, sa, 1); /* will lock socket */ #else error = sobindlock(so, sa, 1); /* will lock socket */ @@ -1733,7 +1735,7 @@ copyout_control(struct proc *p, struct mbuf *m, user_addr_t control, * different size for 32 bits and 64 bits processes */ if (cp->cmsg_level == SOL_SOCKET && cp->cmsg_type == SCM_TIMESTAMP) { - unsigned char tmp_buffer[CMSG_SPACE(sizeof(struct user64_timeval))]; + unsigned char tmp_buffer[CMSG_SPACE(sizeof(struct user64_timeval))] = {}; struct cmsghdr *tmp_cp = (struct cmsghdr *)(void *)tmp_buffer; int tmp_space; struct timeval *tv = (struct timeval *)(void *)CMSG_DATA(cp);