diff options
author | Markus Friedl <markus@cvs.openbsd.org> | 2003-09-19 11:29:41 +0000 |
---|---|---|
committer | Markus Friedl <markus@cvs.openbsd.org> | 2003-09-19 11:29:41 +0000 |
commit | 1ffb819e985153c056e628eb12c16a14a15810b1 (patch) | |
tree | 08bc71869b72adb9e86a67a1513c1484892bee7b | |
parent | a00d7d201f2f4e46bc52fe8562a1b1e74d4ad9f8 (diff) |
provide a ssh-agent specific fatal() function; ok deraadt
-rw-r--r-- | usr.bin/ssh/ssh-agent.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/usr.bin/ssh/ssh-agent.c b/usr.bin/ssh/ssh-agent.c index 344dcd0deea..542ac9e0ba2 100644 --- a/usr.bin/ssh/ssh-agent.c +++ b/usr.bin/ssh/ssh-agent.c @@ -35,7 +35,7 @@ #include "includes.h" #include <sys/queue.h> -RCSID("$OpenBSD: ssh-agent.c,v 1.112 2003/09/18 08:49:45 markus Exp $"); +RCSID("$OpenBSD: ssh-agent.c,v 1.113 2003/09/19 11:29:40 markus Exp $"); #include <openssl/evp.h> #include <openssl/md5.h> @@ -945,7 +945,7 @@ after_select(fd_set *readset, fd_set *writeset) } static void -cleanup_socket(void *p) +cleanup_socket(void) { if (socket_name[0]) unlink(socket_name); @@ -956,17 +956,28 @@ cleanup_socket(void *p) static void cleanup_exit(int i) { - cleanup_socket(NULL); - exit(i); + cleanup_socket(); + _exit(i); } static void cleanup_handler(int sig) { - cleanup_socket(NULL); + cleanup_socket(); _exit(2); } +void +fatal(const char *fmt,...) +{ + va_list args; + va_start(args, fmt); + do_log(SYSLOG_LEVEL_FATAL, fmt, args); + va_end(args); + cleanup_socket(); + _exit(255); +} + static void check_parent_exists(int sig) { @@ -1185,7 +1196,6 @@ main(int ac, char **av) } skip: - fatal_add_cleanup(cleanup_socket, NULL); new_socket(AUTH_SOCKET, sock); if (ac > 0) { signal(SIGALRM, check_parent_exists); |