You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.6 KiB
54 lines
1.6 KiB
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
|
|
|