upstream: downgrade duplicate Subsystem directives from being a

fatal error to being a debug message to match behaviour with just about all
other directives.

OpenBSD-Commit-ID: fc90ed2cc0c18d4eb8e33d2c5e98d25f282588ce
This commit is contained in:
djm@openbsd.org 2023-09-06 23:21:36 +00:00 committed by Damien Miller
parent 1ee0a16e07
commit 52dfe3c72d
No known key found for this signature in database
1 changed files with 15 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* $OpenBSD: servconf.c,v 1.397 2023/08/29 02:50:10 djm Exp $ */
/* $OpenBSD: servconf.c,v 1.398 2023/09/06 23:21:36 djm Exp $ */
/*
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
* All rights reserved
@ -1942,13 +1942,22 @@ process_server_config_line_depth(ServerOptions *options, char *line,
fatal("%s line %d: %s missing argument.",
filename, linenum, keyword);
if (!*activep) {
arg = argv_next(&ac, &av);
argv_consume(&ac);
break;
}
found = 0;
for (i = 0; i < options->num_subsystems; i++) {
if (strcmp(arg, options->subsystem_name[i]) == 0) {
found = 1;
break;
}
}
if (found) {
debug("%s line %d: Subsystem '%s' already defined.",
filename, linenum, arg);
argv_consume(&ac);
break;
}
for (i = 0; i < options->num_subsystems; i++)
if (strcmp(arg, options->subsystem_name[i]) == 0)
fatal("%s line %d: Subsystem '%s' "
"already defined.", filename, linenum, arg);
options->subsystem_name[options->num_subsystems] = xstrdup(arg);
arg = argv_next(&ac, &av);
if (!arg || *arg == '\0')