- 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) {