summaryrefslogtreecommitdiff
path: root/readconf.c
diff options
context:
space:
mode:
authorColin Watson <cjwatson@debian.org>2009-12-29 21:42:53 +0000
committerColin Watson <cjwatson@debian.org>2009-12-29 21:42:53 +0000
commit87552344215a38d3a2b0d4d63dc151e05978bbe1 (patch)
tree9f4b96055e6ccaa915e8d59d9f2805e9e119371d /readconf.c
parenta25ec0b132c44c9e341e08464ff830de06b81126 (diff)
parentef94e5613d37bcbf880f21ee6094e4b1c7683a4c (diff)
import openssh-5.1p1-gsskex-cjwatson-20080722.patch
Diffstat (limited to 'readconf.c')
-rw-r--r--readconf.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/readconf.c b/readconf.c
index 3f82345f6..3aedd6f5a 100644
--- a/readconf.c
+++ b/readconf.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: readconf.c,v 1.162 2007/03/20 03:56:12 tedu Exp $ */ 1/* $OpenBSD: readconf.c,v 1.167 2008/06/26 11:46:31 grunk 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
@@ -132,6 +132,7 @@ typedef enum {
132 oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly, 132 oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly,
133 oSendEnv, oControlPath, oControlMaster, oHashKnownHosts, 133 oSendEnv, oControlPath, oControlMaster, oHashKnownHosts,
134 oTunnel, oTunnelDevice, oLocalCommand, oPermitLocalCommand, 134 oTunnel, oTunnelDevice, oLocalCommand, oPermitLocalCommand,
135 oVisualHostKey,
135 oDeprecated, oUnsupported 136 oDeprecated, oUnsupported
136} OpCodes; 137} OpCodes;
137 138
@@ -232,6 +233,7 @@ static struct {
232 { "tunneldevice", oTunnelDevice }, 233 { "tunneldevice", oTunnelDevice },
233 { "localcommand", oLocalCommand }, 234 { "localcommand", oLocalCommand },
234 { "permitlocalcommand", oPermitLocalCommand }, 235 { "permitlocalcommand", oPermitLocalCommand },
236 { "visualhostkey", oVisualHostKey },
235 { NULL, oBadOption } 237 { NULL, oBadOption }
236}; 238};
237 239
@@ -332,6 +334,7 @@ process_config_line(Options *options, const char *host,
332{ 334{
333 char *s, **charptr, *endofnumber, *keyword, *arg, *arg2, fwdarg[256]; 335 char *s, **charptr, *endofnumber, *keyword, *arg, *arg2, fwdarg[256];
334 int opcode, *intptr, value, value2, scale; 336 int opcode, *intptr, value, value2, scale;
337 LogLevel *log_level_ptr;
335 long long orig, val64; 338 long long orig, val64;
336 size_t len; 339 size_t len;
337 Forward fwd; 340 Forward fwd;
@@ -512,7 +515,6 @@ parse_yesnoask:
512 goto parse_int; 515 goto parse_int;
513 516
514 case oRekeyLimit: 517 case oRekeyLimit:
515 intptr = &options->rekey_limit;
516 arg = strdelim(&s); 518 arg = strdelim(&s);
517 if (!arg || *arg == '\0') 519 if (!arg || *arg == '\0')
518 fatal("%.200s line %d: Missing argument.", filename, linenum); 520 fatal("%.200s line %d: Missing argument.", filename, linenum);
@@ -540,14 +542,14 @@ parse_yesnoask:
540 } 542 }
541 val64 *= scale; 543 val64 *= scale;
542 /* detect integer wrap and too-large limits */ 544 /* detect integer wrap and too-large limits */
543 if ((val64 / scale) != orig || val64 > INT_MAX) 545 if ((val64 / scale) != orig || val64 > UINT_MAX)
544 fatal("%.200s line %d: RekeyLimit too large", 546 fatal("%.200s line %d: RekeyLimit too large",
545 filename, linenum); 547 filename, linenum);
546 if (val64 < 16) 548 if (val64 < 16)
547 fatal("%.200s line %d: RekeyLimit too small", 549 fatal("%.200s line %d: RekeyLimit too small",
548 filename, linenum); 550 filename, linenum);
549 if (*activep && *intptr == -1) 551 if (*activep && options->rekey_limit == -1)
550 *intptr = (int)val64; 552 options->rekey_limit = (u_int32_t)val64;
551 break; 553 break;
552 554
553 case oIdentityFile: 555 case oIdentityFile:
@@ -706,14 +708,14 @@ parse_int:
706 break; 708 break;
707 709
708 case oLogLevel: 710 case oLogLevel:
709 intptr = (int *) &options->log_level; 711 log_level_ptr = &options->log_level;
710 arg = strdelim(&s); 712 arg = strdelim(&s);
711 value = log_level_number(arg); 713 value = log_level_number(arg);
712 if (value == SYSLOG_LEVEL_NOT_SET) 714 if (value == SYSLOG_LEVEL_NOT_SET)
713 fatal("%.200s line %d: unsupported log level '%s'", 715 fatal("%.200s line %d: unsupported log level '%s'",
714 filename, linenum, arg ? arg : "<NONE>"); 716 filename, linenum, arg ? arg : "<NONE>");
715 if (*activep && (LogLevel) *intptr == SYSLOG_LEVEL_NOT_SET) 717 if (*activep && *log_level_ptr == SYSLOG_LEVEL_NOT_SET)
716 *intptr = (LogLevel) value; 718 *log_level_ptr = (LogLevel) value;
717 break; 719 break;
718 720
719 case oLocalForward: 721 case oLocalForward:
@@ -929,6 +931,10 @@ parse_int:
929 intptr = &options->permit_local_command; 931 intptr = &options->permit_local_command;
930 goto parse_flag; 932 goto parse_flag;
931 933
934 case oVisualHostKey:
935 intptr = &options->visual_host_key;
936 goto parse_flag;
937
932 case oDeprecated: 938 case oDeprecated:
933 debug("%s line %d: Deprecated option \"%s\"", 939 debug("%s line %d: Deprecated option \"%s\"",
934 filename, linenum, keyword); 940 filename, linenum, keyword);
@@ -1081,6 +1087,7 @@ initialize_options(Options * options)
1081 options->tun_remote = -1; 1087 options->tun_remote = -1;
1082 options->local_command = NULL; 1088 options->local_command = NULL;
1083 options->permit_local_command = -1; 1089 options->permit_local_command = -1;
1090 options->visual_host_key = -1;
1084} 1091}
1085 1092
1086/* 1093/*
@@ -1219,6 +1226,8 @@ fill_default_options(Options * options)
1219 options->tun_remote = SSH_TUNID_ANY; 1226 options->tun_remote = SSH_TUNID_ANY;
1220 if (options->permit_local_command == -1) 1227 if (options->permit_local_command == -1)
1221 options->permit_local_command = 0; 1228 options->permit_local_command = 0;
1229 if (options->visual_host_key == -1)
1230 options->visual_host_key = 0;
1222 /* options->local_command should not be set by default */ 1231 /* options->local_command should not be set by default */
1223 /* options->proxy_command should not be set by default */ 1232 /* options->proxy_command should not be set by default */
1224 /* options->user will be set in the main program if appropriate */ 1233 /* options->user will be set in the main program if appropriate */
@@ -1275,7 +1284,7 @@ parse_forward(Forward *fwd, const char *fwdspec)
1275 1284
1276 xfree(p); 1285 xfree(p);
1277 1286
1278 if (fwd->listen_port == 0 && fwd->connect_port == 0) 1287 if (fwd->listen_port == 0 || fwd->connect_port == 0)
1279 goto fail_free; 1288 goto fail_free;
1280 1289
1281 if (fwd->connect_host != NULL && 1290 if (fwd->connect_host != NULL &&