X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..5eebf7385fedb1517b66b53c28e5aa6bb0a2be50:/bsd/kern/kern_control.c?ds=sidebyside diff --git a/bsd/kern/kern_control.c b/bsd/kern/kern_control.c index 6e3288a6a..d57e83851 100644 --- a/bsd/kern/kern_control.c +++ b/bsd/kern/kern_control.c @@ -165,6 +165,13 @@ ctl_connect(struct socket *so, struct sockaddr *nam, struct proc *p) if (ctl == NULL) return(EADDRNOTAVAIL); + if (ctl->flags & CTL_FLAG_PRIVILEGED) { + if (p == 0) + return(EINVAL); + if (error = suser(p->p_ucred, &p->p_acflag)) + return error; + } + if (ctl->skt != NULL) return(EBUSY); @@ -176,13 +183,6 @@ ctl_connect(struct socket *so, struct sockaddr *nam, struct proc *p) ctl->skt = so; - if (ctl->flags & CTL_FLAG_PRIVILEGED) { - if (p == 0) - return(EPERM); - if (error = suser(p->p_ucred, &p->p_acflag)) - return error; - } - if (ctl->connect) error = (*ctl->connect)(ctl, ctl->userdata); if (error) { @@ -281,7 +281,8 @@ ctl_enqueuedata(void *ctlref, void *data, size_t len, u_int32_t flags) } bcopy(data, mtod(m, void *), len); - + m->m_pkthdr.len = m->m_len = len; + sbappend(&so->so_rcv, m); if ((flags & CTL_DATA_NOWAKEUP) == 0) sorwakeup(so);