From: Paul J. Reder Date: Thu, 18 Dec 2008 17:31:03 +0000 (+0000) Subject: Commit promoted backport of PR 45994. X-Git-Tag: 2.2.12~309 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f1ed15d4253c9a16b27a3c584ed18049b67e6da;p=thirdparty%2Fapache%2Fhttpd.git Commit promoted backport of PR 45994. *) mod_ldap: Avoid a segfault when result->rc is checked in uldap_connection_init when result is NULL. This could happen if LDAP initialization failed. PR 45994. [Dan Poirier ] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@727773 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 5420876a48c..95584c19858 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,10 @@ -*- coding: utf-8 -*- Changes with Apache 2.2.12 + *) mod_ldap: Avoid a segfault when result->rc is checked in uldap_connection_init + when result is NULL. This could happen if LDAP initialization failed. + PR 45994. [Dan Poirier ] + *) Set Listen protocol to "https" if port is set to 443 and no proto is specified (as documented but not implemented). PR 46066 [Dan Poirier ] diff --git a/STATUS b/STATUS index 5d541fd3130..c4b9349df5e 100644 --- a/STATUS +++ b/STATUS @@ -86,15 +86,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_ldap: Avoid a segfault when result->rc is checked in uldap_connection_init - when result is NULL. This could happen if LDAP initialization failed. - PR 45994. [Dan Poirier ] - Trunk version of patch: - http://svn.apache.org/viewvc?view=rev&revision=727053 - Backport version for 2.2.x of patch: - http://people.apache.org/~rederpj/backport_PR45994_util_ldap.c.diff - +1: rederpj, rpluem, covener - PATCHES PROPOSED TO BACKPORT FROM TRUNK: [ New proposals should be added at the end of the list ] diff --git a/modules/ldap/util_ldap.c b/modules/ldap/util_ldap.c index 5ea50d0a6c8..c9cc6e988a6 100644 --- a/modules/ldap/util_ldap.c +++ b/modules/ldap/util_ldap.c @@ -232,7 +232,16 @@ static int uldap_connection_init(request_rec *r, &(result)); - if (result != NULL && result->rc) { + if (NULL == result) { + /* something really bad happened */ + ldc->bound = 0; + if (NULL == ldc->reason) { + ldc->reason = "LDAP: ldap initialization failed"; + } + return(APR_EGENERAL); + } + + if (result->rc) { ldc->reason = result->reason; }