From aa06756e7d94baea79fdc0f3fc9d586c07bffc26 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Sat, 28 Oct 2017 16:05:51 +0000 Subject: mod_macro: fix usability of globally defined macros in .htaccess files. PR 57525. Reverts pre_config hook from r1656669 (happens too late for EXEC_ON_READ), and ensures ap_macros is reset on restart with a pconf cleanup. Proposed by: Jose Kahan Reviewed by: ylavic git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1813643 13f79535-47bb-0310-9956-ffa450edef68 --- modules/core/mod_macro.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'modules/core') diff --git a/modules/core/mod_macro.c b/modules/core/mod_macro.c index 7a3f8ad179..cbb5a29634 100644 --- a/modules/core/mod_macro.c +++ b/modules/core/mod_macro.c @@ -711,11 +711,17 @@ static const char *macro_section(cmd_parms * cmd, debug(fprintf(stderr, "macro_section: arg='%s'\n", arg)); /* lazy initialization */ - if (ap_macros == NULL) - ap_macros = apr_hash_make(cmd->temp_pool); - ap_assert(ap_macros != NULL); - - pool = apr_hash_pool_get(ap_macros); + if (ap_macros == NULL) { + pool = cmd->pool; + ap_macros = apr_hash_make(pool); + ap_assert(ap_macros != NULL); + apr_pool_cleanup_register(pool, &ap_macros, + ap_pool_cleanup_set_null, + apr_pool_cleanup_null); + } + else { + pool = apr_hash_pool_get(ap_macros); + } endp = (char *) ap_strrchr_c(arg, '>'); @@ -954,12 +960,6 @@ static const char *macro_ignore_bad_nesting(cmd_parms * cmd, void *dummy) return NULL; } -static int macro_pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp) -{ - ap_macros = NULL; - return OK; -} - /************************************************************* EXPORT MODULE */ /* @@ -982,11 +982,6 @@ static const command_rec macro_cmds[] = { {NULL} }; -static void macro_hooks(apr_pool_t *p) -{ - ap_hook_pre_config(macro_pre_config, NULL, NULL, APR_HOOK_MIDDLE); -} - /* Module hooks are request-oriented thus it does not suit configuration file utils a lot. I haven't found any clean hook to apply something @@ -1004,5 +999,5 @@ AP_DECLARE_MODULE(macro) = { NULL, /* create per-server config structure */ NULL, /* merge per-server config structures */ macro_cmds, /* configuration commands */ - macro_hooks /* register hooks */ + NULL /* register hooks */ }; -- cgit v1.2.3