From c653b89b5af165fd7560a3dbdead96415e7a8633 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Fri, 8 Feb 2002 22:05:41 +1100 Subject: - stevesk@cvs.openbsd.org 2002/02/05 15:50:12 [ssh-agent.c] use log interface and remove perror() in child. use fatal_add_cleanup() vs. atexit(). ok mouring@ markus@ --- ssh-agent.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ssh-agent.c b/ssh-agent.c index a0bc9cf09..3b5d06c51 100644 --- a/ssh-agent.c +++ b/ssh-agent.c @@ -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 @@ -36,7 +36,7 @@ */ #include "includes.h" -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 $"); #if defined(HAVE_SYS_QUEUE_H) && !defined(HAVE_BOGUS_SYS_QUEUE_H) #include @@ -722,7 +722,8 @@ after_select(fd_set *readset, fd_set *writeset) 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); @@ -776,7 +777,7 @@ after_select(fd_set *readset, fd_set *writeset) } static void -cleanup_socket(void) +cleanup_socket(void *p) { if (socket_name[0]) unlink(socket_name); @@ -787,14 +788,14 @@ cleanup_socket(void) 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); } @@ -965,7 +966,7 @@ main(int ac, char **av) pid = fork(); if (pid == -1) { perror("fork"); - exit(1); + cleanup_exit(1); } if (pid != 0) { /* Parent - execute the given command. */ close(sock); @@ -988,9 +989,11 @@ main(int ac, char **av) 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); } @@ -1003,16 +1006,13 @@ main(int ac, char **av) /* 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); } #endif 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); @@ -1031,7 +1031,7 @@ skip: 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); } -- cgit v1.2.3