From: David Caldwell Date: Thu, 25 May 2017 00:41:12 +0000 (+0000) Subject: ext/ldap: Allow default host from ldap.conf to work. X-Git-Tag: php-7.2.0alpha1~39 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=747e93eabcc59646c24bfa99c5abe37f4fd11ee4;p=php ext/ldap: Allow default host from ldap.conf to work. This fixes an regression introduced in e7af0fe1eb89e40671e86a588aa1b78607b85461. Previously, calling ldap_connect() with no parameters would pass NULL to ldap_init(), which causes it to use the default host specified in /etc/ldap/ldap.conf (on Ubuntu). When the code changed to use ldap_initialize(), it initialized a uri, even if there were no parameters passed to ldap_connect(). Because of this, there's no way to pass a NULL into ldap_initialize(), making it impossible to use the default uri from ldap.conf. This commit bypasses the uri creation when there is no host argument, passing on a NULL to ldap_initialize() which restores the old PHP 5.5 behavior. --- diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 6d2de18d61..d17719a285 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -409,7 +409,7 @@ PHP_FUNCTION(ldap_connect) { int rc = LDAP_SUCCESS; char *url = host; - if (!ldap_is_ldap_url(url)) { + if (url && !ldap_is_ldap_url(url)) { int urllen = hostlen + sizeof( "ldap://:65535" ); if (port <= 0 || port > 65535) { @@ -419,7 +419,7 @@ PHP_FUNCTION(ldap_connect) } url = emalloc(urllen); - snprintf( url, urllen, "ldap://%s:" ZEND_LONG_FMT, host ? host : "", port ); + snprintf( url, urllen, "ldap://%s:" ZEND_LONG_FMT, host, port ); } #ifdef LDAP_API_FEATURE_X_OPENLDAP