From: Yann Ylavic Date: Fri, 11 Dec 2020 14:46:12 +0000 (+0000) Subject: Merge r1883708, r1884208 from trunk: X-Git-Tag: 2.4.47~208 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5925ff28a4211cd9af5277b114e5c55e20ec3958;p=thirdparty%2Fapache%2Fhttpd.git Merge r1883708, r1884208 from trunk: core: reset ap_runtime_dir to NULL after AP_SQ_MS_DESTROY_CONFIG. ap_runtime_dir_relative() might reuse ap_runtime_dir from previously cleared pconf otherwise. Rearrange and clear global core config state allocated out of pconf from a single cleanup: * server/core.c (reset_config): Clear ap_runtime_dir here, rather than in register_hooks. Submitted by: ylavic, jorton Reviewed by: ylavic, jorton, covener git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1884316 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/config.c b/server/config.c index 0380cbe0263..8d578201b08 100644 --- a/server/config.c +++ b/server/config.c @@ -59,7 +59,6 @@ AP_DECLARE_DATA const char *ap_server_argv0 = NULL; AP_DECLARE_DATA const char *ap_server_root = NULL; -AP_DECLARE_DATA const char *ap_runtime_dir = NULL; AP_DECLARE_DATA server_rec *ap_server_conf = NULL; AP_DECLARE_DATA apr_pool_t *ap_pglobal = NULL; diff --git a/server/core.c b/server/core.c index bbfe49f2731..6c4bccf3b25 100644 --- a/server/core.c +++ b/server/core.c @@ -122,8 +122,12 @@ AP_DECLARE_DATA int ap_document_root_check = 1; /* magic pointer for ErrorDocument xxx "default" */ static char errordocument_default; +/* Global state allocated out of pconf: variables here MUST be + * cleared/reset in reset_config(), a pconf cleanup, to avoid the + * variable getting reused after the pool is cleared. */ static apr_array_header_t *saved_server_config_defines = NULL; static apr_table_t *server_config_defined_vars = NULL; +AP_DECLARE_DATA const char *ap_runtime_dir = NULL; AP_DECLARE_DATA int ap_main_state = AP_SQ_MS_INITIAL_STARTUP; AP_DECLARE_DATA int ap_run_mode = AP_SQ_RM_UNKNOWN; @@ -1414,6 +1418,7 @@ static int reset_config_defines(void *dummy) ap_server_config_defines = saved_server_config_defines; saved_server_config_defines = NULL; server_config_defined_vars = NULL; + ap_runtime_dir = NULL; return OK; }