]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
partial sync of regress/netcat.c with upstream
authortobias <tobias@openbsd.org>
Thu, 26 Mar 2015 10:36:03 +0000 (10:36 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 29 May 2020 04:47:41 +0000 (14:47 +1000)
Check for short writes in fdpass(). Clean up while at it.

ok djm

regress/netcat.c

index 50934f3f21696eaab15186eb80fcf6f332b0cb89..30e49ac01760e6fc05a00072c83be0e79759db10 100644 (file)
@@ -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>
  *
@@ -1034,17 +1034,17 @@ fdpass(int nfd)
 
        bzero(&pfd, sizeof(pfd));
        pfd.fd = STDOUT_FILENO;
+       pfd.events = POLLOUT;
        for (;;) {
                r = sendmsg(STDOUT_FILENO, &msg, 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;