=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/ssh-agent.c,v retrieving revision 1.80 retrieving revision 1.81 diff -u -r1.80 -r1.81 --- src/usr.bin/ssh/ssh-agent.c 2002/02/04 00:53:39 1.80 +++ src/usr.bin/ssh/ssh-agent.c 2002/02/05 15:50:12 1.81 @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-agent.c,v 1.80 2002/02/04 00:53:39 stevesk Exp $ */ +/* $OpenBSD: ssh-agent.c,v 1.81 2002/02/05 15:50:12 stevesk Exp $ */ /* * Author: Tatu Ylonen @@ -37,7 +37,7 @@ #include "includes.h" #include -RCSID("$OpenBSD: ssh-agent.c,v 1.80 2002/02/04 00:53:39 stevesk Exp $"); +RCSID("$OpenBSD: ssh-agent.c,v 1.81 2002/02/05 15:50:12 stevesk Exp $"); #include #include @@ -712,7 +712,8 @@ sock = accept(sockets[i].fd, (struct sockaddr *) &sunaddr, &slen); if (sock < 0) { - perror("accept from AUTH_SOCKET"); + error("accept from AUTH_SOCKET: %s", + strerror(errno)); break; } new_socket(AUTH_CONNECTION, sock); @@ -766,7 +767,7 @@ } static void -cleanup_socket(void) +cleanup_socket(void *p) { if (socket_name[0]) unlink(socket_name); @@ -777,14 +778,14 @@ static void cleanup_exit(int i) { - cleanup_socket(); + cleanup_socket(NULL); exit(i); } static void cleanup_handler(int sig) { - cleanup_socket(); + cleanup_socket(NULL); _exit(2); } @@ -933,7 +934,7 @@ pid = fork(); if (pid == -1) { perror("fork"); - exit(1); + cleanup_exit(1); } if (pid != 0) { /* Parent - execute the given command. */ close(sock); @@ -956,9 +957,11 @@ perror(av[0]); exit(1); } + /* child */ + log_init(__progname, SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_AUTH, 0); if (setsid() == -1) { - perror("setsid"); + error("setsid: %s", strerror(errno)); cleanup_exit(1); } @@ -970,15 +973,12 @@ /* deny core dumps, since memory contains unencrypted private keys */ rlim.rlim_cur = rlim.rlim_max = 0; if (setrlimit(RLIMIT_CORE, &rlim) < 0) { - perror("setrlimit rlimit_core failed"); + error("setrlimit RLIMIT_CORE: %s", strerror(errno)); cleanup_exit(1); } skip: - if (atexit(cleanup_socket) < 0) { - perror("atexit"); - cleanup_exit(1); - } + fatal_add_cleanup(cleanup_socket, NULL); new_socket(AUTH_SOCKET, sock); if (ac > 0) { signal(SIGALRM, check_parent_exists); @@ -997,7 +997,7 @@ if (select(max_fd + 1, readsetp, writesetp, NULL, NULL) < 0) { if (errno == EINTR) continue; - exit(1); + fatal("select: %s", strerror(errno)); } after_select(readsetp, writesetp); }