From: dtucker@openbsd.org Date: Thu, 10 Jun 2021 03:14:14 +0000 (+0000) Subject: upstream: Continue accept loop when pselect X-Git-Tag: V_8_7_P1~147 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=73f6f191f44440ca3049b9d3c8e5401d10b55097;p=thirdparty%2Fopenssh-portable.git upstream: Continue accept loop when pselect returns -1, eg if it was interrupted by a signal. This should prevent the hang discovered by sthen@ wherein sshd receives a SIGHUP while it has an unauthenticated child and goes on to a blocking read on a notify_pipe. feedback deraadt@, ok djm@ OpenBSD-Commit-ID: 0243c1c5544fca0974dae92cd4079543a3fceaa0 --- diff --git a/sshd.c b/sshd.c index 7e80b1749..6d645c4ab 100644 --- a/sshd.c +++ b/sshd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshd.c,v 1.575 2021/06/06 11:34:16 djm Exp $ */ +/* $OpenBSD: sshd.c,v 1.576 2021/06/10 03:14:14 dtucker Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -1213,7 +1213,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s) if (ret == -1 && errno != EINTR) error("pselect: %.100s", strerror(errno)); sigprocmask(SIG_SETMASK, &osigset, NULL); - if (received_sigterm) + if (ret == -1) continue; for (i = 0; i < options.max_startups; i++) {