]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
* modules/ldap/util_ldap.c (util_ldap_child_init): Don't segfault if
authorJoe Orton <jorton@apache.org>
Tue, 12 Oct 2004 12:16:42 +0000 (12:16 +0000)
committerJoe Orton <jorton@apache.org>
Tue, 12 Oct 2004 12:16:42 +0000 (12:16 +0000)
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

index 19fed12d6793bdbb0e7ee6b9dd85795a46f93f45..bf7aa28df9639de60d0c58dc7edfae5fd345e675 100644 (file)
 
 #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) {