1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- From 69709289b083c53ba41d2cef7d65120220f8c59b Mon Sep 17 00:00:00 2001
- From: Sumit Bose <sbose@redhat.com>
- Date: Tue, 7 May 2013 17:02:57 +0200
- Subject: [PATCH] LDAPI SASL fix
- Resolves: #960222
- ---
- libraries/libldap/cyrus.c | 19 ++++++++++++++++---
- 1 Datei geändert, 16 Zeilen hinzugefügt(+), 3 Zeilen entfernt(-)
- diff --git a/libraries/libldap/cyrus.c b/libraries/libldap/cyrus.c
- index 28c241b..a9acf36 100644
- --- a/libraries/libldap/cyrus.c
- +++ b/libraries/libldap/cyrus.c
- @@ -394,6 +394,8 @@ ldap_int_sasl_bind(
- struct berval ccred = BER_BVNULL;
- int saslrc, rc;
- unsigned credlen;
- + char my_hostname[HOST_NAME_MAX + 1];
- + int free_saslhost = 0;
-
- Debug( LDAP_DEBUG_TRACE, "ldap_int_sasl_bind: %s\n",
- mechs ? mechs : "<null>", 0, 0 );
- @@ -454,14 +456,25 @@ ldap_int_sasl_bind(
-
- /* If we don't need to canonicalize just use the host
- * from the LDAP URI.
- + * Always use the result of gethostname() for LDAPI.
- */
- - if ( nocanon )
- + if (ld->ld_defconn->lconn_server->lud_scheme != NULL &&
- + strcmp("ldapi", ld->ld_defconn->lconn_server->lud_scheme) == 0) {
- + rc = gethostname(my_hostname, HOST_NAME_MAX + 1);
- + if (rc == 0) {
- + saslhost = my_hostname;
- + } else {
- + saslhost = "localhost";
- + }
- + } else if ( nocanon )
- saslhost = ld->ld_defconn->lconn_server->lud_host;
- - else
- + else {
- saslhost = ldap_host_connected_to( ld->ld_defconn->lconn_sb,
- "localhost" );
- + free_saslhost = 1;
- + }
- rc = ldap_int_sasl_open( ld, ld->ld_defconn, saslhost );
- - if ( !nocanon )
- + if ( free_saslhost )
- LDAP_FREE( saslhost );
- }
-
- --
- 1.7.11.7
|