]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: downgrade duplicate Subsystem directives from being a
authordjm@openbsd.org <djm@openbsd.org>
Wed, 6 Sep 2023 23:21:36 +0000 (23:21 +0000)
committerDamien Miller <djm@mindrot.org>
Wed, 6 Sep 2023 23:54:00 +0000 (09:54 +1000)
fatal error to being a debug message to match behaviour with just about all
other directives.

OpenBSD-Commit-ID: fc90ed2cc0c18d4eb8e33d2c5e98d25f282588ce

servconf.c

index e16f9e90fc7123c06758237147312f51c06a6224..a3779a9d86ee076ccc575298f6ca5af0d6a65a0c 100644 (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')