]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: match .events with .fd better
authorderaadt@openbsd.org <deraadt@openbsd.org>
Sun, 14 Nov 2021 06:15:36 +0000 (06:15 +0000)
committerDamien Miller <djm@mindrot.org>
Wed, 17 Nov 2021 22:12:28 +0000 (09:12 +1100)
OpenBSD-Commit-ID: 77eef212ca0add905949532af390164489c5984b

sftp-server.c

index 3f3de399d3874dbe4d8a97c6e819a884b1b1948b..7db74004fe4b78456279052070d6b22be2e1ea5b 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-server.c,v 1.132 2021/11/14 03:25:10 deraadt Exp $ */
+/* $OpenBSD: sftp-server.c,v 1.133 2021/11/14 06:15:36 deraadt Exp $ */
 /*
  * Copyright (c) 2000-2004 Markus Friedl.  All rights reserved.
  *
@@ -1844,8 +1844,6 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
 
                memset(pfd, 0, sizeof pfd);
                pfd[0].fd = pfd[1].fd = -1;
-               pfd[0].events = POLLIN;
-               pfd[1].events = POLLOUT;
 
                /*
                 * Ensure that we can read a full buffer and handle
@@ -1854,14 +1852,18 @@ sftp_server_main(int argc, char **argv, struct passwd *user_pw)
                 */
                if ((r = sshbuf_check_reserve(iqueue, sizeof(buf))) == 0 &&
                    (r = sshbuf_check_reserve(oqueue,
-                   SFTP_MAX_MSG_LENGTH)) == 0)
+                   SFTP_MAX_MSG_LENGTH)) == 0) {
                        pfd[0].fd = in;
+                       pfd[0].events = POLLIN;
+               }
                else if (r != SSH_ERR_NO_BUFFER_SPACE)
                        fatal_fr(r, "reserve");
 
                olen = sshbuf_len(oqueue);
-               if (olen > 0)
+               if (olen > 0) {
                        pfd[1].fd = out;
+                       pfd[1].events = POLLOUT;
+               }
 
                if (poll(pfd, 2, -1) == -1) {
                        if (errno == EINTR)