upstream: check for POLLHUP wherever we check for POLLIN

OpenBSD-Commit-ID: 6aa6f3ec6b17c3bd9bfec672a917f003a76d93e5
This commit is contained in:
djm@openbsd.org 2021-11-18 03:31:44 +00:00 committed by Damien Miller
parent 36b5e37030
commit 875408270c
3 changed files with 7 additions and 8 deletions

View 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> * Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@ -1214,10 +1214,9 @@ after_poll(struct pollfd *pfd, size_t npfd, u_int maxfds)
activefds++; activefds++;
break; break;
case AUTH_CONNECTION: case AUTH_CONNECTION:
if ((pfd[i].revents & (POLLIN|POLLERR)) != 0 && if ((pfd[i].revents & (POLLIN|POLLHUP|POLLERR)) != 0 &&
handle_conn_read(socknum) != 0) { handle_conn_read(socknum) != 0)
goto close_sock; goto close_sock;
}
if ((pfd[i].revents & (POLLOUT|POLLHUP)) != 0 && if ((pfd[i].revents & (POLLOUT|POLLHUP)) != 0 &&
handle_conn_write(socknum) != 0) { handle_conn_write(socknum) != 0) {
close_sock: close_sock:

View 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>. * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
* *
@ -597,7 +597,7 @@ conloop(void)
for (i = 0; i < maxfd; i++) { for (i = 0; i < maxfd; i++) {
if (read_wait[i].revents & (POLLHUP|POLLERR|POLLNVAL)) if (read_wait[i].revents & (POLLHUP|POLLERR|POLLNVAL))
confree(i); confree(i);
else if (read_wait[i].revents & POLLIN) else if (read_wait[i].revents & (POLLIN|POLLHUP))
conread(i); conread(i);
} }

View 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. * Copyright (c) 2010 Markus Friedl. All rights reserved.
* *
@ -385,7 +385,7 @@ main(int argc, char **argv)
} }
/* copy stdin to iqueue */ /* 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); len = read(in, buf, sizeof buf);
if (len == 0) { if (len == 0) {
debug("read eof"); debug("read eof");