diff options
author | mjg <mjg@FreeBSD.org> | 2013-07-02 07:36:04 +0000 |
---|---|---|
committer | mjg <mjg@FreeBSD.org> | 2013-07-02 07:36:04 +0000 |
commit | 80f69955c8013874ae6bcd1d55dd183d69116299 (patch) | |
tree | c9daee134ed270d2a44a1674d5525ea18047ca76 | |
parent | ad998c9e9f5e1e7c57d38533282576dea7ee9cfb (diff) | |
download | FreeBSD-src-80f69955c8013874ae6bcd1d55dd183d69116299.zip FreeBSD-src-80f69955c8013874ae6bcd1d55dd183d69116299.tar.gz |
Fix receiving fd over unix socket broken in r247740.
If n fds were passed, it would receive the first one n times.
Reported by: Shawn Webb <lattera@gmail.com>, koobs, gleb
Tested by: koobs, gleb
Reviewed by: pjd
-rw-r--r-- | sys/kern/uipc_usrreq.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 5d8e814..7a4db04 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -1764,8 +1764,8 @@ unp_externalize(struct mbuf *control, struct mbuf **controlp, int flags) } for (i = 0; i < newfds; i++, fdp++) { fde = &fdesc->fd_ofiles[*fdp]; - fde->fde_file = fdep[0]->fde_file; - filecaps_move(&fdep[0]->fde_caps, + fde->fde_file = fdep[i]->fde_file; + filecaps_move(&fdep[i]->fde_caps, &fde->fde_caps); if ((flags & MSG_CMSG_CLOEXEC) != 0) fde->fde_flags |= UF_EXCLOSE; |