--- libraries/libldap/sasl.c 2003/05/22 14:21:14 1.50
+++ libraries/libldap/sasl.c 2003/12/01 00:58:26 1.50.2.3
@@ -1,7 +1,19 @@
-/* $OpenLDAP: pkg/ldap/libraries/libldap/sasl.c,v 1.49 2003/02/13 22:02:31 hyc Exp $ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* $OpenLDAP$ */
+/* This work is part of OpenLDAP Software .
+ *
+ * Copyright 1998-2003 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * .
+ */
+/* Portions Copyright (C) The Internet Society (1997)
+ * ASN.1 fragments are from RFC 2251; see RFC for full legal notices.
*/
/*
@@ -429,6 +441,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 );
@@ -439,26 +452,31 @@ ldap_sasl_interactive_bind_s(
* ask all the time. No, we don't ever actually bind, but I'll
* let the final bind handler take care of saving the cdn.
*/
- rc = ldap_simple_bind(ld, dn, NULL);
- return rc < 0 ? rc : 0;
+ rc = ldap_simple_bind( ld, dn, NULL );
+ rc = rc < 0 ? rc : 0;
+ goto done;
} else
#endif
- if( mechs == NULL || *mechs == '\0' ) {
- char *smechs;
+#ifdef HAVE_CYRUS_SASL
+ if( mechs == NULL || *mechs == '\0' ) {
+ 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 ) {
goto done;
}
#ifdef NEW_LOGGING
LDAP_LOG ( TRANSPORT, DETAIL1,
- "ldap_interactive_sasl_bind_s: server supports: %s\n",
+ "ldap_sasl_interactive_bind_s: server supports: %s\n",
smechs, 0, 0 );
#else
Debug( LDAP_DEBUG_TRACE,
- "ldap_interactive_sasl_bind_s: server supports: %s\n",
+ "ldap_sasl_interactive_bind_s: server supports: %s\n",
smechs, 0, 0 );
#endif
@@ -467,10 +485,11 @@ ldap_sasl_interactive_bind_s(
} else {
#ifdef NEW_LOGGING
LDAP_LOG ( TRANSPORT, DETAIL1,
- "ldap_interactive_sasl_bind_s: user selected: %s\n", mechs, 0, 0 );
+ "ldap_sasl_interactive_bind_s: user selected: %s\n",
+ mechs, 0, 0 );
#else
Debug( LDAP_DEBUG_TRACE,
- "ldap_interactive_sasl_bind_s: user selected: %s\n",
+ "ldap_sasl_interactive_bind_s: user selected: %s\n",
mechs, 0, 0 );
#endif
}
@@ -483,6 +502,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;
}