]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: fix stack-use-after-scope
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 23 Feb 2021 11:48:51 +0000 (20:48 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 23 Feb 2021 14:39:31 +0000 (15:39 +0100)
Fixes a bug introduced by f70e6fb471a4eeed8e2a4a7c608beabbb0aba8be.

Fixes #18753.

src/core/main.c

index 9ad7db192c897f5aa876ef18e52b6de2f1ec47a9..e41e73c581d4276545acbec556794a45e9838957 100644 (file)
@@ -700,26 +700,24 @@ static int parse_config_file(void) {
                 {}
         };
 
-        _cleanup_strv_free_ char **_free_files = NULL, **_free_dirs = NULL;
-
-        const char *const *files, *const *dirs, *suffix;
+        _cleanup_strv_free_ char **files = NULL, **dirs = NULL;
+        const char *suffix;
         int r;
 
-        if (arg_system) {
-                files = STRV_MAKE_CONST(PKGSYSCONFDIR "/system.conf");
-                dirs = (const char* const*) CONF_PATHS_STRV("systemd");
+        if (arg_system)
                 suffix = "system.conf.d";
-        else {
-                r = manager_find_user_config_paths(&_free_files, &_free_dirs);
+        else {
+                r = manager_find_user_config_paths(&files, &dirs);
                 if (r < 0)
                         return log_error_errno(r, "Failed to determine config file paths: %m");
-                files = (const char* const*) _free_files;
-                dirs = (const char* const*) _free_dirs;
+
                 suffix = "user.conf.d";
         }
 
         (void) config_parse_many(
-                        files, dirs, suffix,
+                        (const char* const*) (files ?: STRV_MAKE(PKGSYSCONFDIR "/system.conf")),
+                        (const char* const*) (dirs ?: CONF_PATHS_STRV("systemd")),
+                        suffix,
                         "Manager\0",
                         config_item_table_lookup, items,
                         CONFIG_PARSE_WARN,