summaryrefslogtreecommitdiff
path: root/ssh-agent.c
diff options
context:
space:
mode:
authorBen Lindstrom <mouring@eviladmin.org>2001-07-04 03:48:02 +0000
committerBen Lindstrom <mouring@eviladmin.org>2001-07-04 03:48:02 +0000
commitd94580c708175649f4e433451ac096425d3b81e2 (patch)
tree863548b7f5bd84e58452b43450c839c3b60b1d80 /ssh-agent.c
parentcd392284acc87a4e0a4b687163355b706b9e97cf (diff)
- markus@cvs.openbsd.org 2001/06/26 04:07:06
[ssh-agent.1 ssh-agent.c] add debug flag
Diffstat (limited to 'ssh-agent.c')
-rw-r--r--ssh-agent.c35
1 files changed, 26 insertions, 9 deletions
diff --git a/ssh-agent.c b/ssh-agent.c
index 54b375fce..573efaf89 100644
--- a/ssh-agent.c
+++ b/ssh-agent.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssh-agent.c,v 1.56 2001/06/25 08:25:40 markus Exp $ */ 1/* $OpenBSD: ssh-agent.c,v 1.57 2001/06/26 04:07:06 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -36,7 +36,7 @@
36 */ 36 */
37 37
38#include "includes.h" 38#include "includes.h"
39RCSID("$OpenBSD: ssh-agent.c,v 1.56 2001/06/25 08:25:40 markus Exp $"); 39RCSID("$OpenBSD: ssh-agent.c,v 1.57 2001/06/26 04:07:06 markus Exp $");
40 40
41#include <openssl/evp.h> 41#include <openssl/evp.h>
42#include <openssl/md5.h> 42#include <openssl/md5.h>
@@ -706,7 +706,7 @@ usage(void)
706int 706int
707main(int ac, char **av) 707main(int ac, char **av)
708{ 708{
709 int sock, c_flag = 0, k_flag = 0, s_flag = 0, ch; 709 int sock, c_flag = 0, d_flag = 0, k_flag = 0, s_flag = 0, ch;
710 struct sockaddr_un sunaddr; 710 struct sockaddr_un sunaddr;
711#ifdef HAVE_SETRLIMIT 711#ifdef HAVE_SETRLIMIT
712 struct rlimit rlim; 712 struct rlimit rlim;
@@ -726,9 +726,9 @@ main(int ac, char **av)
726 seed_rng(); 726 seed_rng();
727 727
728#ifdef __GNU_LIBRARY__ 728#ifdef __GNU_LIBRARY__
729 while ((ch = getopt(ac, av, "+cks")) != -1) { 729 while ((ch = getopt(ac, av, "+cdks")) != -1) {
730#else /* __GNU_LIBRARY__ */ 730#else /* __GNU_LIBRARY__ */
731 while ((ch = getopt(ac, av, "cks")) != -1) { 731 while ((ch = getopt(ac, av, "cdks")) != -1) {
732#endif /* __GNU_LIBRARY__ */ 732#endif /* __GNU_LIBRARY__ */
733 switch (ch) { 733 switch (ch) {
734 case 'c': 734 case 'c':
@@ -744,6 +744,11 @@ main(int ac, char **av)
744 usage(); 744 usage();
745 s_flag++; 745 s_flag++;
746 break; 746 break;
747 case 'd':
748 if (d_flag)
749 usage();
750 d_flag++;
751 break;
747 default: 752 default:
748 usage(); 753 usage();
749 } 754 }
@@ -751,10 +756,10 @@ main(int ac, char **av)
751 ac -= optind; 756 ac -= optind;
752 av += optind; 757 av += optind;
753 758
754 if (ac > 0 && (c_flag || k_flag || s_flag)) 759 if (ac > 0 && (c_flag || k_flag || s_flag || d_flag))
755 usage(); 760 usage();
756 761
757 if (ac == 0 && !c_flag && !k_flag && !s_flag) { 762 if (ac == 0 && !c_flag && !k_flag && !s_flag && !d_flag) {
758 shell = getenv("SHELL"); 763 shell = getenv("SHELL");
759 if (shell != NULL && strncmp(shell + strlen(shell) - 3, "csh", 3) == 0) 764 if (shell != NULL && strncmp(shell + strlen(shell) - 3, "csh", 3) == 0)
760 c_flag = 1; 765 c_flag = 1;
@@ -827,6 +832,14 @@ main(int ac, char **av)
827 * Fork, and have the parent execute the command, if any, or present 832 * Fork, and have the parent execute the command, if any, or present
828 * the socket data. The child continues as the authentication agent. 833 * the socket data. The child continues as the authentication agent.
829 */ 834 */
835 if (d_flag) {
836 log_init(__progname, SYSLOG_LEVEL_DEBUG1, SYSLOG_FACILITY_AUTH, 1);
837 format = c_flag ? "setenv %s %s;\n" : "%s=%s; export %s;\n";
838 printf(format, SSH_AUTHSOCKET_ENV_NAME, socket_name,
839 SSH_AUTHSOCKET_ENV_NAME);
840 printf("echo Agent pid %d;\n", parent_pid);
841 goto skip;
842 }
830 pid = fork(); 843 pid = fork();
831 if (pid == -1) { 844 if (pid == -1) {
832 perror("fork"); 845 perror("fork");
@@ -869,6 +882,8 @@ main(int ac, char **av)
869 perror("setsid"); 882 perror("setsid");
870 cleanup_exit(1); 883 cleanup_exit(1);
871 } 884 }
885
886skip:
872 if (atexit(cleanup_socket) < 0) { 887 if (atexit(cleanup_socket) < 0) {
873 perror("atexit"); 888 perror("atexit");
874 cleanup_exit(1); 889 cleanup_exit(1);
@@ -879,8 +894,10 @@ main(int ac, char **av)
879 alarm(10); 894 alarm(10);
880 } 895 }
881 idtab_init(); 896 idtab_init();
882 signal(SIGINT, SIG_IGN); 897 if (!d_flag) {
883 signal(SIGPIPE, SIG_IGN); 898 signal(SIGINT, SIG_IGN);
899 signal(SIGPIPE, SIG_IGN);
900 }
884 signal(SIGHUP, cleanup_handler); 901 signal(SIGHUP, cleanup_handler);
885 signal(SIGTERM, cleanup_handler); 902 signal(SIGTERM, cleanup_handler);
886 while (1) { 903 while (1) {