diff options
author | Tobias Stoeckmann <tobias@cvs.openbsd.org> | 2015-03-26 10:36:04 +0000 |
---|---|---|
committer | Tobias Stoeckmann <tobias@cvs.openbsd.org> | 2015-03-26 10:36:04 +0000 |
commit | 5df9b715a94458c23abeef227cfac80fbe1f1cc9 (patch) | |
tree | c6ab145ce2fe05e621bd0cdb5ac1f10f8a4ee91e /usr.bin/nc/netcat.c | |
parent | bc50d2389956e93bf1b81d3c60b4780adf1cbfc0 (diff) |
Check for short writes in fdpass(). Clean up while at it.
ok djm
Diffstat (limited to 'usr.bin/nc/netcat.c')
-rw-r--r-- | usr.bin/nc/netcat.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/usr.bin/nc/netcat.c b/usr.bin/nc/netcat.c index ce7fde45259..88a2a25053f 100644 --- a/usr.bin/nc/netcat.c +++ b/usr.bin/nc/netcat.c @@ -1,4 +1,4 @@ -/* $OpenBSD: netcat.c,v 1.127 2015/02/14 22:40:22 jca Exp $ */ +/* $OpenBSD: netcat.c,v 1.128 2015/03/26 10:36:03 tobias Exp $ */ /* * Copyright (c) 2001 Eric Jackson <ericj@monkey.org> * @@ -980,7 +980,6 @@ fdpass(int nfd) bzero(&mh, sizeof(mh)); bzero(&cmsgbuf, sizeof(cmsgbuf)); bzero(&iov, sizeof(iov)); - bzero(&pfd, sizeof(pfd)); mh.msg_control = (caddr_t)&cmsgbuf.buf; mh.msg_controllen = sizeof(cmsgbuf.buf); @@ -997,17 +996,17 @@ fdpass(int nfd) bzero(&pfd, sizeof(pfd)); pfd.fd = STDOUT_FILENO; + pfd.events = POLLOUT; for (;;) { r = sendmsg(STDOUT_FILENO, &mh, 0); if (r == -1) { if (errno == EAGAIN || errno == EINTR) { - pfd.events = POLLOUT; if (poll(&pfd, 1, -1) == -1) err(1, "poll"); continue; } err(1, "sendmsg"); - } else if (r == -1) + } else if (r != 1) errx(1, "sendmsg: unexpected return value %zd", r); else break; |