From 0250da057d8eea11ee76ff5100be41bb2ce2241c Mon Sep 17 00:00:00 2001 From: Ben Lindstrom Date: Sun, 22 Jul 2001 20:44:00 +0000 Subject: - markus@cvs.openbsd.org 2001/07/20 14:46:11 [ssh-agent.c] do not exit() from signal handlers; ok deraadt@ --- ssh-agent.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'ssh-agent.c') diff --git a/ssh-agent.c b/ssh-agent.c index 84ffe855b..46a1199b1 100644 --- a/ssh-agent.c +++ b/ssh-agent.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-agent.c,v 1.67 2001/07/18 21:40:40 stevesk Exp $ */ +/* $OpenBSD: ssh-agent.c,v 1.68 2001/07/20 14:46:11 markus Exp $ */ /* * Author: Tatu Ylonen @@ -36,7 +36,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh-agent.c,v 1.67 2001/07/18 21:40:40 stevesk Exp $"); +RCSID("$OpenBSD: ssh-agent.c,v 1.68 2001/07/20 14:46:11 markus Exp $"); #include #include @@ -778,20 +778,6 @@ after_select(fd_set *readset, fd_set *writeset) } } -static void -check_parent_exists(int sig) -{ - int save_errno = errno; - - if (parent_pid != -1 && kill(parent_pid, 0) < 0) { - /* printf("Parent has died - Authentication agent exiting.\n"); */ - exit(1); - } - signal(SIGALRM, check_parent_exists); - alarm(10); - errno = save_errno; -} - static void cleanup_socket(void) { @@ -815,6 +801,20 @@ cleanup_handler(int sig) _exit(2); } +static void +check_parent_exists(int sig) +{ + int save_errno = errno; + + if (parent_pid != -1 && kill(parent_pid, 0) < 0) { + /* printf("Parent has died - Authentication agent exiting.\n"); */ + cleanup_handler(sig); /* safe */ + } + signal(SIGALRM, check_parent_exists); + alarm(10); + errno = save_errno; +} + static void usage(void) { -- cgit v1.2.3