From 22b024abd86ba6d5c105bf6d1ab9618d53793ea3 Mon Sep 17 00:00:00 2001 From: Yann Ylavic Date: Fri, 22 Sep 2017 12:31:54 +0000 Subject: [PATCH] config: follow up to r1809302. We need to check that the module itself is at the right version. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1809305 13f79535-47bb-0310-9956-ffa450edef68 --- include/http_config.h | 7 +++++-- server/config.c | 10 ++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/http_config.h b/include/http_config.h index 9adfcbf9a7..cfc0c3233c 100644 --- a/include/http_config.h +++ b/include/http_config.h @@ -333,8 +333,11 @@ struct cmd_parms_struct { ap_directive_t *parent; }; -#define AP_MODULE_HAS_FLAGS \ - AP_MODULE_MAGIC_AT_LEAST(20161018,7) +#define AP_MODULE_FLAGS_MMN_MAJOR 20161018 +#define AP_MODULE_FLAGS_MMN_MINOR 7 +#define AP_MODULE_HAS_FLAGS(m) \ + AP_MODULE_MAGIC_AT_LEAST(AP_MODULE_FLAGS_MMN_MAJOR, \ + AP_MODULE_FLAGS_MMN_MINOR) #if AP_MODULE_HAS_FLAGS /** * Flags associated with a module. diff --git a/server/config.c b/server/config.c index 74674a52fc..12552c6474 100644 --- a/server/config.c +++ b/server/config.c @@ -339,8 +339,14 @@ static void merge_server_configs(apr_pool_t *p, ap_conf_vector_t *base, if (!virt_vector[i]) { #if AP_MODULE_HAS_FLAGS - if (df && modp->create_server_config - && modp->flags & AP_MODULE_FLAG_ALWAYS_MERGE) { + if (df + && modp->create_server_config + && (modp->version > AP_MODULE_FLAGS_MMN_MAJOR + || (modp->version == AP_MODULE_FLAGS_MMN_MAJOR + && (modp->minor_version >= + AP_MODULE_FLAGS_MMN_MINOR))) + /* keep this after version checks (flags out-of-bound) */ + && (modp->flags & AP_MODULE_FLAG_ALWAYS_MERGE)) { virt_vector[i] = (*modp->create_server_config)(p, virt); } else -- 2.40.0