From 0f91d128fb339c526fc35605f33c09cf07627244 Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Tue, 30 Jun 2015 01:27:42 +0000 Subject: [PATCH] Very difficult to read, and therefore was wrong. Assert that the SubstituteInheritBefore option was explicitly toggled, and do not default in 2.x to this legacy behavior. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1688339 13f79535-47bb-0310-9956-ffa450edef68 --- modules/filters/mod_substitute.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/filters/mod_substitute.c b/modules/filters/mod_substitute.c index 648f7de282..cdc8c04532 100644 --- a/modules/filters/mod_substitute.c +++ b/modules/filters/mod_substitute.c @@ -86,9 +86,16 @@ static void *merge_substitute_dcfg(apr_pool_t *p, void *basev, void *overv) subst_dir_conf *base = (subst_dir_conf *) basev; subst_dir_conf *over = (subst_dir_conf *) overv; - a->inherit_before = (over->inherit_before > 0 || (over->inherit_before < 0 && - base->inherit_before > 0)); - if (a->inherit_before) { + a->inherit_before = (over->inherit_before != -1) + ? over->inherit_before + : base->inherit_before; + /* SubstituteInheritBefore was the default behavior until 2.5.x, + * and may be re-enabled as desired; this original default behavior + * was to apply inherited subst patterns before locally scoped patterns. + * In later 2.2 and 2.4 versions, SubstituteInheritBefore may be toggled + * 'off' to follow the corrected/expected behavior, without violating POLS. + */ + if (a->inherit_before == 1) { a->patterns = apr_array_append(p, base->patterns, over->patterns); } -- 2.50.1