]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/kern/kern_control.c
xnu-792.6.70.tar.gz
[apple/xnu.git] / bsd / kern / kern_control.c
index 955bbd3751098e397d346e57f626dc7961de2c9e..95c9cbe2eb5f0697ba2b96f2373cc6c96809b28a 100644 (file)
@@ -637,6 +637,8 @@ ctl_ctloutput(struct socket *so, struct sockopt *sopt)
                                MALLOC(data, void *, sopt->sopt_valsize, M_TEMP, M_WAITOK);
                                if (data == NULL)
                                        return(ENOMEM);
                                MALLOC(data, void *, sopt->sopt_valsize, M_TEMP, M_WAITOK);
                                if (data == NULL)
                                        return(ENOMEM);
+                               /* 4108337 - copy in data for get socket option */
+                               error = sooptcopyin(sopt, data, sopt->sopt_valsize, sopt->sopt_valsize);
                        }
                        len = sopt->sopt_valsize;
                        socket_unlock(so, 0);
                        }
                        len = sopt->sopt_valsize;
                        socket_unlock(so, 0);
@@ -770,7 +772,7 @@ ctl_register(struct kern_ctl_reg *userkctl, kern_ctl_ref *kctlref)
                userkctl->ctl_sendsize = CTL_SENDSIZE;
        kctl->sendbufsize = userkctl->ctl_sendsize;
 
                userkctl->ctl_sendsize = CTL_SENDSIZE;
        kctl->sendbufsize = userkctl->ctl_sendsize;
 
-       if (kctl->recvbufsize == 0)
+       if (userkctl->ctl_recvsize == 0)
                userkctl->ctl_recvsize = CTL_RECVSIZE;
        kctl->recvbufsize = userkctl->ctl_recvsize;
 
                userkctl->ctl_recvsize = CTL_RECVSIZE;
        kctl->recvbufsize = userkctl->ctl_recvsize;