check for POLLHUP wherever we check for POLLIN
authordjm <djm@openbsd.org>
Thu, 18 Nov 2021 03:31:44 +0000 (03:31 +0000)
committerdjm <djm@openbsd.org>
Thu, 18 Nov 2021 03:31:44 +0000 (03:31 +0000)
usr.bin/ssh/ssh-agent.c
usr.bin/ssh/ssh-keyscan.c
usr.bin/ssh/ssh-pkcs11-helper.c

index 8c7030a..d0d74b5 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-agent.c,v 1.278 2021/04/03 06:18:41 djm Exp $ */
+/* $OpenBSD: ssh-agent.c,v 1.279 2021/11/18 03:31:44 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1200,10 +1200,9 @@ after_poll(struct pollfd *pfd, size_t npfd, u_int maxfds)
                                activefds++;
                        break;
                case AUTH_CONNECTION:
-                       if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 &&
-                           handle_conn_read(socknum) != 0) {
+                       if ((pfd[i].revents & (POLLIN|POLLHUP|POLLERR)) != 0 &&
+                           handle_conn_read(socknum) != 0)
                                goto close_sock;
-                       }
                        if ((pfd[i].revents & (POLLOUT|POLLHUP)) != 0 &&
                            handle_conn_write(socknum) != 0) {
  close_sock:
index abde781..e3acfe0 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-keyscan.c,v 1.142 2021/11/12 05:23:49 deraadt Exp $ */
+/* $OpenBSD: ssh-keyscan.c,v 1.143 2021/11/18 03:31:44 djm Exp $ */
 /*
  * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
  *
@@ -579,7 +579,7 @@ conloop(void)
        for (i = 0; i < maxfd; i++) {
                if (read_wait[i].revents & (POLLHUP|POLLERR|POLLNVAL))
                        confree(i);
-               else if (read_wait[i].revents & POLLIN)
+               else if (read_wait[i].revents & (POLLIN|POLLHUP))
                        conread(i);
        }
 
index 5b4f84e..1a62757 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-pkcs11-helper.c,v 1.25 2021/08/11 05:20:17 djm Exp $ */
+/* $OpenBSD: ssh-pkcs11-helper.c,v 1.26 2021/11/18 03:31:44 djm Exp $ */
 /*
  * Copyright (c) 2010 Markus Friedl.  All rights reserved.
  *
@@ -372,7 +372,7 @@ main(int argc, char **argv)
                }
 
                /* copy stdin to iqueue */
-               if ((pfd[0].revents & (POLLIN|POLLERR)) != 0) {
+               if ((pfd[0].revents & (POLLIN|POLLHUP|POLLERR)) != 0) {
                        len = read(in, buf, sizeof buf);
                        if (len == 0) {
                                debug("read eof");