- 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@
This commit is contained in:
parent
a500cd608e
commit
c653b89b5a
28
ssh-agent.c
28
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>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#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)
|
#if defined(HAVE_SYS_QUEUE_H) && !defined(HAVE_BOGUS_SYS_QUEUE_H)
|
||||||
#include <sys/queue.h>
|
#include <sys/queue.h>
|
||||||
|
@ -722,7 +722,8 @@ after_select(fd_set *readset, fd_set *writeset)
|
||||||
sock = accept(sockets[i].fd,
|
sock = accept(sockets[i].fd,
|
||||||
(struct sockaddr *) &sunaddr, &slen);
|
(struct sockaddr *) &sunaddr, &slen);
|
||||||
if (sock < 0) {
|
if (sock < 0) {
|
||||||
perror("accept from AUTH_SOCKET");
|
error("accept from AUTH_SOCKET: %s",
|
||||||
|
strerror(errno));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
new_socket(AUTH_CONNECTION, sock);
|
new_socket(AUTH_CONNECTION, sock);
|
||||||
|
@ -776,7 +777,7 @@ after_select(fd_set *readset, fd_set *writeset)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cleanup_socket(void)
|
cleanup_socket(void *p)
|
||||||
{
|
{
|
||||||
if (socket_name[0])
|
if (socket_name[0])
|
||||||
unlink(socket_name);
|
unlink(socket_name);
|
||||||
|
@ -787,14 +788,14 @@ cleanup_socket(void)
|
||||||
static void
|
static void
|
||||||
cleanup_exit(int i)
|
cleanup_exit(int i)
|
||||||
{
|
{
|
||||||
cleanup_socket();
|
cleanup_socket(NULL);
|
||||||
exit(i);
|
exit(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cleanup_handler(int sig)
|
cleanup_handler(int sig)
|
||||||
{
|
{
|
||||||
cleanup_socket();
|
cleanup_socket(NULL);
|
||||||
_exit(2);
|
_exit(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -965,7 +966,7 @@ main(int ac, char **av)
|
||||||
pid = fork();
|
pid = fork();
|
||||||
if (pid == -1) {
|
if (pid == -1) {
|
||||||
perror("fork");
|
perror("fork");
|
||||||
exit(1);
|
cleanup_exit(1);
|
||||||
}
|
}
|
||||||
if (pid != 0) { /* Parent - execute the given command. */
|
if (pid != 0) { /* Parent - execute the given command. */
|
||||||
close(sock);
|
close(sock);
|
||||||
|
@ -988,9 +989,11 @@ main(int ac, char **av)
|
||||||
perror(av[0]);
|
perror(av[0]);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
/* child */
|
||||||
|
log_init(__progname, SYSLOG_LEVEL_INFO, SYSLOG_FACILITY_AUTH, 0);
|
||||||
|
|
||||||
if (setsid() == -1) {
|
if (setsid() == -1) {
|
||||||
perror("setsid");
|
error("setsid: %s", strerror(errno));
|
||||||
cleanup_exit(1);
|
cleanup_exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1003,16 +1006,13 @@ main(int ac, char **av)
|
||||||
/* deny core dumps, since memory contains unencrypted private keys */
|
/* deny core dumps, since memory contains unencrypted private keys */
|
||||||
rlim.rlim_cur = rlim.rlim_max = 0;
|
rlim.rlim_cur = rlim.rlim_max = 0;
|
||||||
if (setrlimit(RLIMIT_CORE, &rlim) < 0) {
|
if (setrlimit(RLIMIT_CORE, &rlim) < 0) {
|
||||||
perror("setrlimit rlimit_core failed");
|
error("setrlimit RLIMIT_CORE: %s", strerror(errno));
|
||||||
cleanup_exit(1);
|
cleanup_exit(1);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
skip:
|
skip:
|
||||||
if (atexit(cleanup_socket) < 0) {
|
fatal_add_cleanup(cleanup_socket, NULL);
|
||||||
perror("atexit");
|
|
||||||
cleanup_exit(1);
|
|
||||||
}
|
|
||||||
new_socket(AUTH_SOCKET, sock);
|
new_socket(AUTH_SOCKET, sock);
|
||||||
if (ac > 0) {
|
if (ac > 0) {
|
||||||
signal(SIGALRM, check_parent_exists);
|
signal(SIGALRM, check_parent_exists);
|
||||||
|
@ -1031,7 +1031,7 @@ skip:
|
||||||
if (select(max_fd + 1, readsetp, writesetp, NULL, NULL) < 0) {
|
if (select(max_fd + 1, readsetp, writesetp, NULL, NULL) < 0) {
|
||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
exit(1);
|
fatal("select: %s", strerror(errno));
|
||||||
}
|
}
|
||||||
after_select(readsetp, writesetp);
|
after_select(readsetp, writesetp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue