ITS#2717, use default SASL_MECH if none was provided.

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.
This commit is contained in:
Howard Chu 2003-09-22 23:50:33 +00:00
parent 089a4852d6
commit 38a406c8ab

View 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;
}