upstream commit
a couple of parse targets were missing activep checks, causing them to be misapplied in match context; bz#2272 diagnosis and original patch from Sami Hartikainen ok dtucker@
This commit is contained in:
parent
7e8528cad0
commit
9559d7de34
15
servconf.c
15
servconf.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: servconf.c,v 1.267 2015/05/01 04:17:51 djm Exp $ */
|
/* $OpenBSD: servconf.c,v 1.268 2015/05/01 07:08:08 djm Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
* All rights reserved
|
* All rights reserved
|
||||||
|
@ -1018,7 +1018,7 @@ process_server_config_line(ServerOptions *options, char *line,
|
||||||
if ((value = convtime(arg)) == -1)
|
if ((value = convtime(arg)) == -1)
|
||||||
fatal("%s line %d: invalid time value.",
|
fatal("%s line %d: invalid time value.",
|
||||||
filename, linenum);
|
filename, linenum);
|
||||||
if (*intptr == -1)
|
if (*activep && *intptr == -1)
|
||||||
*intptr = value;
|
*intptr = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1596,7 +1596,7 @@ process_server_config_line(ServerOptions *options, char *line,
|
||||||
if (value == -1)
|
if (value == -1)
|
||||||
fatal("%s line %d: Bad yes/point-to-point/ethernet/"
|
fatal("%s line %d: Bad yes/point-to-point/ethernet/"
|
||||||
"no argument: %s", filename, linenum, arg);
|
"no argument: %s", filename, linenum, arg);
|
||||||
if (*intptr == -1)
|
if (*activep && *intptr == -1)
|
||||||
*intptr = value;
|
*intptr = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1735,7 +1735,7 @@ process_server_config_line(ServerOptions *options, char *line,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case sAuthenticationMethods:
|
case sAuthenticationMethods:
|
||||||
if (*activep && options->num_auth_methods == 0) {
|
if (options->num_auth_methods == 0) {
|
||||||
while ((arg = strdelim(&cp)) && *arg != '\0') {
|
while ((arg = strdelim(&cp)) && *arg != '\0') {
|
||||||
if (options->num_auth_methods >=
|
if (options->num_auth_methods >=
|
||||||
MAX_AUTH_METHODS)
|
MAX_AUTH_METHODS)
|
||||||
|
@ -1746,6 +1746,8 @@ process_server_config_line(ServerOptions *options, char *line,
|
||||||
fatal("%s line %d: invalid "
|
fatal("%s line %d: invalid "
|
||||||
"authentication method list.",
|
"authentication method list.",
|
||||||
filename, linenum);
|
filename, linenum);
|
||||||
|
if (!*activep)
|
||||||
|
continue;
|
||||||
options->auth_methods[
|
options->auth_methods[
|
||||||
options->num_auth_methods++] = xstrdup(arg);
|
options->num_auth_methods++] = xstrdup(arg);
|
||||||
}
|
}
|
||||||
|
@ -1755,12 +1757,13 @@ process_server_config_line(ServerOptions *options, char *line,
|
||||||
case sStreamLocalBindMask:
|
case sStreamLocalBindMask:
|
||||||
arg = strdelim(&cp);
|
arg = strdelim(&cp);
|
||||||
if (!arg || *arg == '\0')
|
if (!arg || *arg == '\0')
|
||||||
fatal("%s line %d: missing StreamLocalBindMask argument.",
|
fatal("%s line %d: missing StreamLocalBindMask "
|
||||||
filename, linenum);
|
"argument.", filename, linenum);
|
||||||
/* Parse mode in octal format */
|
/* Parse mode in octal format */
|
||||||
value = strtol(arg, &p, 8);
|
value = strtol(arg, &p, 8);
|
||||||
if (arg == p || value < 0 || value > 0777)
|
if (arg == p || value < 0 || value > 0777)
|
||||||
fatal("%s line %d: Bad mask.", filename, linenum);
|
fatal("%s line %d: Bad mask.", filename, linenum);
|
||||||
|
if (*activep)
|
||||||
options->fwd_opts.streamlocal_bind_mask = (mode_t)value;
|
options->fwd_opts.streamlocal_bind_mask = (mode_t)value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue