]> git.sur5r.net Git - openldap/commitdiff
Import ITS#2717 SASL_MECH fix from HEAD
authorHoward Chu <hyc@openldap.org>
Wed, 21 Jan 2004 09:03:23 +0000 (09:03 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 21 Jan 2004 09:03:23 +0000 (09:03 +0000)
libraries/libldap/sasl.c

index 2e7a0841b7ab9555044c03ad6a871eedf767bc20..ebe2fea4209869ec408283a0f26988dfe96acf43 100644 (file)
@@ -427,6 +427,7 @@ ldap_sasl_interactive_bind_s(
        void *defaults )
 {
        int rc;
+       char *smechs = NULL;
 
 #if defined( LDAP_R_COMPILE ) && defined( HAVE_CYRUS_SASL )
        ldap_pvt_thread_mutex_lock( &ldap_int_sasl_mutex );
@@ -441,9 +442,14 @@ ldap_sasl_interactive_bind_s(
                return rc < 0 ? rc : 0;
        } else
 #endif
+
+#ifdef HAVE_CYRUS_SASL
        if( mechs == NULL || *mechs == '\0' ) {
-               char *smechs;
+               mechs = ld->ld_options.ldo_def_sasl_mech;
+       }
+#endif
 
+       if( mechs == NULL || *mechs == '\0' ) {
                rc = ldap_pvt_sasl_getmechs( ld, &smechs );
 
                if( rc != LDAP_SUCCESS ) {
@@ -481,6 +487,7 @@ done:
 #if defined( LDAP_R_COMPILE ) && defined( HAVE_CYRUS_SASL )
        ldap_pvt_thread_mutex_unlock( &ldap_int_sasl_mutex );
 #endif
+       if ( smechs ) LDAP_FREE( smechs );
 
        return rc;
 }