summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkus <markus@openbsd.org>2012-12-11 22:16:21 +0000
committermarkus <markus@openbsd.org>2012-12-11 22:16:21 +0000
commit5fcdafde610898e5e88b448d307bee080a6d6c08 (patch)
treec84f3f385f260d3c002757c86fa40ace913d8751
parentAdd a SMART check using atactl(8) against disks that support and have (diff)
downloadwireguard-openbsd-5fcdafde610898e5e88b448d307bee080a6d6c08.tar.xz
wireguard-openbsd-5fcdafde610898e5e88b448d307bee080a6d6c08.zip
drain the log messages after receiving the keystate from the unpriv
child. otherwise it might block while sending. ok djm@
-rw-r--r--usr.bin/ssh/monitor.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/usr.bin/ssh/monitor.c b/usr.bin/ssh/monitor.c
index 628200e9bf2..46b5d74bc07 100644
--- a/usr.bin/ssh/monitor.c
+++ b/usr.bin/ssh/monitor.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor.c,v 1.119 2012/12/02 20:34:10 djm Exp $ */
+/* $OpenBSD: monitor.c,v 1.120 2012/12/11 22:16:21 markus Exp $ */
/*
* Copyright 2002 Niels Provos <provos@citi.umich.edu>
* Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -346,10 +346,6 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
#endif
}
- /* Drain any buffered messages from the child */
- while (pmonitor->m_log_recvfd != -1 && monitor_read_log(pmonitor) == 0)
- ;
-
if (!authctxt->valid)
fatal("%s: authenticated invalid user", __func__);
if (strcmp(auth_method, "unknown") == 0)
@@ -360,6 +356,10 @@ monitor_child_preauth(Authctxt *_authctxt, struct monitor *pmonitor)
mm_get_keystate(pmonitor);
+ /* Drain any buffered messages from the child */
+ while (pmonitor->m_log_recvfd != -1 && monitor_read_log(pmonitor) == 0)
+ ;
+
close(pmonitor->m_sendfd);
close(pmonitor->m_log_recvfd);
pmonitor->m_sendfd = pmonitor->m_log_recvfd = -1;