]> git.sur5r.net Git - openldap/commitdiff
ITS#2717, use default SASL_MECH if none was provided.
authorHoward Chu <hyc@openldap.org>
Mon, 22 Sep 2003 23:50:33 +0000 (23:50 +0000)
committerHoward Chu <hyc@openldap.org>
Mon, 22 Sep 2003 23:50:33 +0000 (23:50 +0000)
Note that the mech stored in the void *defaults structure is useless
because we can't look inside the structure, and the mech list is needed
as input to the SASL library, before any callbacks are called. It seems
the mech doesn't belong in the *defaults struct, and/or it should be
visible and not opaque.

libraries/libldap/sasl.c

index 1509ccd3b18a1538e335d183099adc260ceea487..27da363e0c9195f53ad3537dfd2bf4553f892124 100644 (file)
@@ -433,6 +433,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 );
@@ -449,8 +450,10 @@ ldap_sasl_interactive_bind_s(
        } else
 #endif
        if( mechs == NULL || *mechs == '\0' ) {
-               char *smechs;
-
+               mechs = ld->ld_options.ldo_def_sasl_mech;
+       }
+               
+       if( mechs == NULL || *mechs == '\0' ) {
                rc = ldap_pvt_sasl_getmechs( ld, &smechs );
                if( rc != LDAP_SUCCESS ) {
                        goto done;
@@ -488,6 +491,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;
 }