From: Yu Watanabe Date: Tue, 23 Feb 2021 11:48:51 +0000 (+0900) Subject: core: fix stack-use-after-scope X-Git-Tag: v248-rc2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e94a009c109bc1ddb7d247e32e4fd6f85770ad39;p=thirdparty%2Fsystemd.git core: fix stack-use-after-scope Fixes a bug introduced by f70e6fb471a4eeed8e2a4a7c608beabbb0aba8be. Fixes #18753. --- diff --git a/src/core/main.c b/src/core/main.c index 9ad7db192c8..e41e73c581d 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -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,