From: Yann Ylavic Date: Tue, 20 Feb 2018 13:02:54 +0000 (+0000) Subject: Merge r1824811 from trunk: X-Git-Tag: 2.4.31~33 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=222e916572924072a167915b47914463fab4cab1;p=apache Merge r1824811 from trunk: 10 years after r567503 , fix this properly. The lock is created in post_config, so we can't copy it around in a merge_server_config() callback. Submitted by: covener Reviewed by: covener, rpluem, jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1824872 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 01ac798c09..3ab0b27376 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.4.31 + *) mod_ldap: Avoid possible crashes, hangs, and busy loops due to + improper merging of the cache lock in vhost config. + PR 43164 [Eric Covener] + *) mpm_event: Do lingering close in worker(s). [Yann Ylavic] *) mpm_queue: Put fdqueue code in common for MPMs event and worker. diff --git a/modules/ldap/util_ldap.c b/modules/ldap/util_ldap.c index 9df71134cf..08f986c372 100644 --- a/modules/ldap/util_ldap.c +++ b/modules/ldap/util_ldap.c @@ -2858,7 +2858,6 @@ static void *util_ldap_merge_config(apr_pool_t *p, void *basev, st->search_cache_size = base->search_cache_size; st->compare_cache_ttl = base->compare_cache_ttl; st->compare_cache_size = base->compare_cache_size; - st->util_ldap_cache_lock = base->util_ldap_cache_lock; st->connections = NULL; st->ssl_supported = 0; /* not known until post-config and re-merged */ @@ -2977,12 +2976,12 @@ static int util_ldap_post_config(apr_pool_t *p, apr_pool_t *plog, st_vhost = (util_ldap_state_t *) ap_get_module_config(s_vhost->module_config, &ldap_module); - + st_vhost->util_ldap_cache = st->util_ldap_cache; + st_vhost->util_ldap_cache_lock = st->util_ldap_cache_lock; #if APR_HAS_SHARED_MEMORY st_vhost->cache_shm = st->cache_shm; st_vhost->cache_rmm = st->cache_rmm; st_vhost->cache_file = st->cache_file; - st_vhost->util_ldap_cache = st->util_ldap_cache; ap_log_error(APLOG_MARK, APLOG_DEBUG, result, s, APLOGNO(01316) "LDAP merging Shared Cache conf: shm=0x%pp rmm=0x%pp " "for VHOST: %s", st->cache_shm, st->cache_rmm,