diff options
Diffstat (limited to 'ssh-agent.c')
-rw-r--r-- | ssh-agent.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/ssh-agent.c b/ssh-agent.c index 2eb3322a0..5356e1161 100644 --- a/ssh-agent.c +++ b/ssh-agent.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssh-agent.c,v 1.200 2015/04/24 01:36:01 deraadt Exp $ */ | 1 | /* $OpenBSD: ssh-agent.c,v 1.201 2015/04/24 05:26:44 djm Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -1146,7 +1146,7 @@ usage(void) | |||
1146 | int | 1146 | int |
1147 | main(int ac, char **av) | 1147 | main(int ac, char **av) |
1148 | { | 1148 | { |
1149 | int c_flag = 0, d_flag = 0, k_flag = 0, s_flag = 0; | 1149 | int c_flag = 0, d_flag = 0, D_flag = 0, k_flag = 0, s_flag = 0; |
1150 | int sock, fd, ch, result, saved_errno; | 1150 | int sock, fd, ch, result, saved_errno; |
1151 | u_int nalloc; | 1151 | u_int nalloc; |
1152 | char *shell, *format, *pidstr, *agentsocket = NULL; | 1152 | char *shell, *format, *pidstr, *agentsocket = NULL; |
@@ -1181,7 +1181,7 @@ main(int ac, char **av) | |||
1181 | __progname = ssh_get_progname(av[0]); | 1181 | __progname = ssh_get_progname(av[0]); |
1182 | seed_rng(); | 1182 | seed_rng(); |
1183 | 1183 | ||
1184 | while ((ch = getopt(ac, av, "cdksE:a:t:")) != -1) { | 1184 | while ((ch = getopt(ac, av, "cDdksE:a:t:")) != -1) { |
1185 | switch (ch) { | 1185 | switch (ch) { |
1186 | case 'E': | 1186 | case 'E': |
1187 | fingerprint_hash = ssh_digest_alg_by_name(optarg); | 1187 | fingerprint_hash = ssh_digest_alg_by_name(optarg); |
@@ -1202,10 +1202,15 @@ main(int ac, char **av) | |||
1202 | s_flag++; | 1202 | s_flag++; |
1203 | break; | 1203 | break; |
1204 | case 'd': | 1204 | case 'd': |
1205 | if (d_flag) | 1205 | if (d_flag || D_flag) |
1206 | usage(); | 1206 | usage(); |
1207 | d_flag++; | 1207 | d_flag++; |
1208 | break; | 1208 | break; |
1209 | case 'D': | ||
1210 | if (d_flag || D_flag) | ||
1211 | usage(); | ||
1212 | D_flag++; | ||
1213 | break; | ||
1209 | case 'a': | 1214 | case 'a': |
1210 | agentsocket = optarg; | 1215 | agentsocket = optarg; |
1211 | break; | 1216 | break; |
@@ -1222,7 +1227,7 @@ main(int ac, char **av) | |||
1222 | ac -= optind; | 1227 | ac -= optind; |
1223 | av += optind; | 1228 | av += optind; |
1224 | 1229 | ||
1225 | if (ac > 0 && (c_flag || k_flag || s_flag || d_flag)) | 1230 | if (ac > 0 && (c_flag || k_flag || s_flag || d_flag || D_flag)) |
1226 | usage(); | 1231 | usage(); |
1227 | 1232 | ||
1228 | if (ac == 0 && !c_flag && !s_flag) { | 1233 | if (ac == 0 && !c_flag && !s_flag) { |
@@ -1291,8 +1296,10 @@ main(int ac, char **av) | |||
1291 | * Fork, and have the parent execute the command, if any, or present | 1296 | * Fork, and have the parent execute the command, if any, or present |
1292 | * the socket data. The child continues as the authentication agent. | 1297 | * the socket data. The child continues as the authentication agent. |
1293 | */ | 1298 | */ |
1294 | if (d_flag) { | 1299 | if (D_flag || d_flag) { |
1295 | log_init(__progname, SYSLOG_LEVEL_DEBUG1, SYSLOG_FACILITY_AUTH, 1); | 1300 | log_init(__progname, |
1301 | d_flag ? SYSLOG_LEVEL_DEBUG3 : SYSLOG_LEVEL_INFO, | ||
1302 | SYSLOG_FACILITY_AUTH, 1); | ||
1296 | format = c_flag ? "setenv %s %s;\n" : "%s=%s; export %s;\n"; | 1303 | format = c_flag ? "setenv %s %s;\n" : "%s=%s; export %s;\n"; |
1297 | printf(format, SSH_AUTHSOCKET_ENV_NAME, socket_name, | 1304 | printf(format, SSH_AUTHSOCKET_ENV_NAME, socket_name, |
1298 | SSH_AUTHSOCKET_ENV_NAME); | 1305 | SSH_AUTHSOCKET_ENV_NAME); |
@@ -1364,7 +1371,7 @@ skip: | |||
1364 | parent_alive_interval = 10; | 1371 | parent_alive_interval = 10; |
1365 | idtab_init(); | 1372 | idtab_init(); |
1366 | signal(SIGPIPE, SIG_IGN); | 1373 | signal(SIGPIPE, SIG_IGN); |
1367 | signal(SIGINT, d_flag ? cleanup_handler : SIG_IGN); | 1374 | signal(SIGINT, (d_flag | D_flag) ? cleanup_handler : SIG_IGN); |
1368 | signal(SIGHUP, cleanup_handler); | 1375 | signal(SIGHUP, cleanup_handler); |
1369 | signal(SIGTERM, cleanup_handler); | 1376 | signal(SIGTERM, cleanup_handler); |
1370 | nalloc = 0; | 1377 | nalloc = 0; |