summaryrefslogtreecommitdiff
path: root/ssh-agent.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2002-02-08 22:05:41 +1100
committerDamien Miller <djm@mindrot.org>2002-02-08 22:05:41 +1100
commitc653b89b5af165fd7560a3dbdead96415e7a8633 (patch)
treee841fefcb79e59cb3e2f2a709ac9cb8788750a67 /ssh-agent.c
parenta500cd608eb505c41fca079433721d46a02e8e1a (diff)
downloadopenssh-git-c653b89b5af165fd7560a3dbdead96415e7a8633.tar.gz
- 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@
Diffstat (limited to 'ssh-agent.c')
-rw-r--r--ssh-agent.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/ssh-agent.c b/ssh-agent.c
index a0bc9cf0..3b5d06c5 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 <ylo@cs.hut.fi>
@@ -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 <sys/queue.h>
@@ -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);
}