]> andersk Git - openssh.git/commitdiff
- dtucker@cvs.openbsd.org 2004/02/05 05:37:17
authordtucker <dtucker>
Fri, 6 Feb 2004 05:40:27 +0000 (05:40 +0000)
committerdtucker <dtucker>
Fri, 6 Feb 2004 05:40:27 +0000 (05:40 +0000)
     [monitor.c sshd.c]
     Pass SIGALRM through to privsep child if LoginGraceTime expires. ok markus@

ChangeLog
monitor.c
sshd.c

index 367fce4527cbd7ab36153d2a56df53bb71c12cbe..3044e3f36ce8b26d888cb1c0254aadb8555f54e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,6 +18,9 @@
      support for password change; ok dtucker@
      (set password-dead=1w in login.conf to use this).
      In -Portable, this is currently only platforms using bsdauth.
+   - dtucker@cvs.openbsd.org 2004/02/05 05:37:17
+     [monitor.c sshd.c]
+     Pass SIGALRM through to privsep child if LoginGraceTime expires. ok markus@
 
 20040129
  - (dtucker) OpenBSD CVS Sync regress/
index 46e8d16e60fa1cc56edf83f28f434e899c291f20..009dcf18256b95965857f2fc5841dccdc1ad30b1 100644 (file)
--- a/monitor.c
+++ b/monitor.c
@@ -25,7 +25,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: monitor.c,v 1.54 2003/11/21 11:57:03 djm Exp $");
+RCSID("$OpenBSD: monitor.c,v 1.55 2004/02/05 05:37:17 dtucker Exp $");
 
 #include <openssl/dh.h>
 
@@ -1708,6 +1708,7 @@ monitor_init(void)
 
        mon = xmalloc(sizeof(*mon));
 
+       mon->m_pid = 0;
        monitor_socketpair(pair);
 
        mon->m_recvfd = pair[0];
diff --git a/sshd.c b/sshd.c
index ebb44db7562d8aeca44e26164540e03fa8241d26..42484c0648645d60577fb54d50871708c93b244f 100644 (file)
--- a/sshd.c
+++ b/sshd.c
@@ -42,7 +42,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshd.c,v 1.284 2003/12/09 21:53:37 markus Exp $");
+RCSID("$OpenBSD: sshd.c,v 1.285 2004/02/05 05:37:17 dtucker Exp $");
 
 #include <openssl/dh.h>
 #include <openssl/bn.h>
@@ -200,7 +200,7 @@ int startup_pipe;           /* in child */
 
 /* variables used for privilege separation */
 int use_privsep;
-struct monitor *pmonitor;
+struct monitor *pmonitor = NULL;
 
 /* message to be displayed after login */
 Buffer loginmsg;
@@ -306,6 +306,9 @@ grace_alarm_handler(int sig)
 {
        /* XXX no idea how fix this signal handler */
 
+       if (use_privsep && pmonitor != NULL && pmonitor->m_pid > 0)
+               kill(pmonitor->m_pid, SIGALRM);
+
        /* Log error and exit. */
        fatal("Timeout before authentication for %s", get_remote_ipaddr());
 }
@@ -593,6 +596,7 @@ privsep_preauth(Authctxt *authctxt)
                debug2("Network child is on pid %ld", (long)pid);
 
                close(pmonitor->m_recvfd);
+               pmonitor->m_pid = pid;
                monitor_child_preauth(authctxt, pmonitor);
                close(pmonitor->m_sendfd);
 
This page took 0.050071 seconds and 5 git commands to generate.