- deraadt@cvs.openbsd.org 2001/01/25 8:06:33
[ssh-agent.c]
call _exit() in signal handler
diff --git a/ssh-agent.c b/ssh-agent.c
index d3713be..539f8ce 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-agent.c,v 1.47 2001/01/21 19:05:56 markus Exp $ */
+/* $OpenBSD: ssh-agent.c,v 1.48 2001/01/25 08:06:33 deraadt Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -37,7 +37,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.47 2001/01/21 19:05:56 markus Exp $");
+RCSID("$OpenBSD: ssh-agent.c,v 1.48 2001/01/25 08:06:33 deraadt Exp $");
#include <openssl/evp.h>
#include <openssl/md5.h>
@@ -683,8 +683,10 @@
void
cleanup_socket(void)
{
- unlink(socket_name);
- rmdir(socket_dir);
+ if (socket_name[0])
+ unlink(socket_name);
+ if (socket_dir[0])
+ rmdir(socket_dir);
}
void
@@ -695,6 +697,13 @@
}
void
+cleanup_handler(int sig)
+{
+ cleanup_socket();
+ _exit(2);
+}
+
+void
usage()
{
fprintf(stderr, "ssh-agent version %s\n", SSH_VERSION);
@@ -866,8 +875,8 @@
idtab_init();
signal(SIGINT, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
- signal(SIGHUP, cleanup_exit);
- signal(SIGTERM, cleanup_exit);
+ signal(SIGHUP, cleanup_handler);
+ signal(SIGTERM, cleanup_handler);
while (1) {
prepare_select(&readsetp, &writesetp, &max_fd);
if (select(max_fd + 1, readsetp, writesetp, NULL, NULL) < 0) {