]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Merge r1883708, r1884208 from trunk:
authorYann Ylavic <ylavic@apache.org>
Fri, 11 Dec 2020 14:46:12 +0000 (14:46 +0000)
committerYann Ylavic <ylavic@apache.org>
Fri, 11 Dec 2020 14:46:12 +0000 (14:46 +0000)
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

server/config.c
server/core.c

index 0380cbe02632647c7081c860832b365a0fbb51e6..8d578201b087b3555c95be53dd605081d46a5163 100644 (file)
@@ -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;
 
index bbfe49f2731bef71bbdf162530eac746f0bdebcd..6c4bccf3b258f75faafc1c00c5f0623daa265eee 100644 (file)
@@ -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;
 }