- markus@cvs.openbsd.org 2001/07/20 14:46:11
[ssh-agent.c]
do not exit() from signal handlers; ok deraadt@
diff --git a/ChangeLog b/ChangeLog
index 69d66f6..c712b12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -14,6 +14,9 @@
- stevesk@cvs.openbsd.org 2001/07/19 00:41:44
[ssh.1]
escape chars are below now
+ - markus@cvs.openbsd.org 2001/07/20 14:46:11
+ [ssh-agent.c]
+ do not exit() from signal handlers; ok deraadt@
20010719
- (tim) [configure.in] put inet_aton back in AC_CHECK_FUNCS.
@@ -6087,4 +6090,4 @@
- Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1
-$Id: ChangeLog,v 1.1419 2001/07/22 20:41:59 mouring Exp $
+$Id: ChangeLog,v 1.1420 2001/07/22 20:44:00 mouring Exp $
diff --git a/ssh-agent.c b/ssh-agent.c
index 84ffe85..46a1199 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 <ylo@cs.hut.fi>
@@ -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 <openssl/evp.h>
#include <openssl/md5.h>
@@ -779,20 +779,6 @@
}
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)
{
if (socket_name[0])
@@ -816,6 +802,20 @@
}
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)
{
fprintf(stderr, "ssh-agent version %s\n", SSH_VERSION);