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
This commit is contained in:
parent
c785c0ae13
commit
73f6f191f4
4
sshd.c
4
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 <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
|
||||||
|
@ -1213,7 +1213,7 @@ server_accept_loop(int *sock_in, int *sock_out, int *newsock, int *config_s)
|
||||||
if (ret == -1 && errno != EINTR)
|
if (ret == -1 && errno != EINTR)
|
||||||
error("pselect: %.100s", strerror(errno));
|
error("pselect: %.100s", strerror(errno));
|
||||||
sigprocmask(SIG_SETMASK, &osigset, NULL);
|
sigprocmask(SIG_SETMASK, &osigset, NULL);
|
||||||
if (received_sigterm)
|
if (ret == -1)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (i = 0; i < options.max_startups; i++) {
|
for (i = 0; i < options.max_startups; i++) {
|
||||||
|
|
Loading…
Reference in New Issue