From 8aaa48d5e27d2ae295aed0492c1f67ab2ee1bde1 Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Tue, 12 Oct 2004 12:16:42 +0000 Subject: [PATCH] * modules/ldap/util_ldap.c (util_ldap_child_init): Don't segfault if the cache has been disabled (when _cache_lock == NULL). (util_ldap_post_config): Set mutex permissions if necessary. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105412 13f79535-47bb-0310-9956-ffa450edef68 --- modules/ldap/util_ldap.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/ldap/util_ldap.c b/modules/ldap/util_ldap.c index 19fed12d67..bf7aa28df9 100644 --- a/modules/ldap/util_ldap.c +++ b/modules/ldap/util_ldap.c @@ -40,6 +40,10 @@ #if !APR_HAS_LDAP #error mod_ldap requires APR-util to have LDAP support built in +#endif + +#ifdef AP_NEED_SET_MUTEX_PERMS +#include "unixd.h" #endif /* defines for certificate file types @@ -1196,6 +1200,15 @@ static int util_ldap_post_config(apr_pool_t *p, apr_pool_t *plog, return result; } +#ifdef AP_NEED_SET_MUTEX_PERMS + result = unixd_set_global_mutex_perms(st->util_ldap_cache_lock); + if (result != APR_SUCCESS) { + ap_log_error(APLOG_MARK, APLOG_CRIT, result, s, + "LDAP cache: failed to set mutex permissions"); + return result; + } +#endif + /* merge config in all vhost */ s_vhost = s->next; while (s_vhost) { @@ -1271,8 +1284,9 @@ static int util_ldap_post_config(apr_pool_t *p, apr_pool_t *plog, static void util_ldap_child_init(apr_pool_t *p, server_rec *s) { apr_status_t sts; - util_ldap_state_t *st = - (util_ldap_state_t *)ap_get_module_config(s->module_config, &ldap_module); + util_ldap_state_t *st = ap_get_module_config(s->module_config, &ldap_module); + + if (!st->util_ldap_cache_lock) return; sts = apr_global_mutex_child_init(&st->util_ldap_cache_lock, st->lock_file, p); if (sts != APR_SUCCESS) { -- 2.40.0