]> granicus.if.org Git - apache/commitdiff
mod_macro: fix usability of globally defined macros in .htaccess files.
authorYann Ylavic <ylavic@apache.org>
Sat, 28 Oct 2017 16:05:51 +0000 (16:05 +0000)
committerYann Ylavic <ylavic@apache.org>
Sat, 28 Oct 2017 16:05:51 +0000 (16:05 +0000)
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 <jose w3.org>
Reviewed by: ylavic

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1813643 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/core/mod_macro.c

diff --git a/CHANGES b/CHANGES
index f790204359ac437cf2e7d613f08a7d564c332f54..d02b98d854289f04150b9ff40c0f513282445e57 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) mod_macro: fix usability of globally defined macros in .htaccess files.
+     PR 57525.  [Jose Kahan <jose w3.org>, Yann Ylavic]
+
   *) mod_md: v1.0.1, ServerName/Alias names from pure-http: virtual hosts are no longer
      auto-added to a Managed Domain. Error counts of jobs are presisted. When the server
      restarts (gracefully) any errored staging areas are purged to reset the signup/renewal
index 7a3f8ad179960c3e484c8d48f9d11658a6ffac2f..cbb5a29634da161294589b3b2de529e0220f397b 100644 (file)
@@ -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 */
 };