check for POLLHUP as well as POLLIN in sshd listen loop;
authordjm <djm@openbsd.org>
Thu, 18 Nov 2021 03:07:20 +0000 (03:07 +0000)
committerdjm <djm@openbsd.org>
Thu, 18 Nov 2021 03:07:20 +0000 (03:07 +0000)
ok deraadt millert

usr.bin/ssh/sshd.c

index 4fb6a0f..29adda3 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshd.c,v 1.580 2021/11/17 21:06:39 djm Exp $ */
+/* $OpenBSD: sshd.c,v 1.581 2021/11/18 03:07:20 djm Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -1165,7 +1165,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
 
                for (i = 0; i < options.max_startups; i++) {
                        if (startup_pipes[i] == -1 ||
-                           !(pfd[num_listen_socks+i].revents & POLLIN))
+                           !(pfd[num_listen_socks+i].revents & (POLLIN|POLLHUP)))
                                continue;
                        switch (read(startup_pipes[i], &c, sizeof(c))) {
                        case -1: