Commit ba78939a authored by Joe Orton's avatar Joe Orton
Browse files

Merge r105412 from trunk:

* 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.

Reviewed by: jorton, minfrin, wrowe


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@231006 13f79535-47bb-0310-9956-ffa450edef68
parent 3b65d6e9
Loading
Loading
Loading
Loading
+0 −7
Changes for STATUS: 0 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -312,13 +312,6 @@ PATCHES PROPOSED TO BACKPORT FROM TRUNK:
        http://svn.apache.org/viewcvs.cgi?rev=209539&view=rev
        +1: pquerna

     *) mod_ldap: Initialize mutex permissions properly so that
        locking actually works.
        http://svn.apache.org/viewcvs?rev=105412&view=rev
        rediff for 2.0.x: http://people.apache.org/~jorton/ap_ldapmutex20.diff
        +1: jorton, minfrin, wrowe
        wrowe asks: where is AP_NEED_SET_MUTEX_PERMS when you need it?

PATCHES TO BACKPORT THAT ARE ON HOLD OR NOT GOING ANYWHERE SOON:

    *) Remove LDAP toolkit specific code from util_ldap and mod_auth_ldap.
+17 −2
Changes for modules/experimental/util_ldap.c: 17 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -41,6 +41,11 @@

#ifndef APU_HAS_LDAP
#error mod_ldap requires APR-util to have LDAP support built in
#endif

#if !defined(OS2) && !defined(WIN32) && !defined(BEOS) && !defined(NETWARE)
#include "unixd.h"
#define UTIL_LDAP_SET_MUTEX_PERMS
#endif

    /* defines for certificate file types
@@ -1466,6 +1471,15 @@ static int util_ldap_post_config(apr_pool_t *p, apr_pool_t *plog,
            return result;
        }

#ifdef UTIL_LDAP_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) {
@@ -1650,8 +1664,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) {