diff --git a/libraries/libldap/cyrus.c b/libraries/libldap/cyrus.c index c03d5464ad..08176f01ed 100644 --- a/libraries/libldap/cyrus.c +++ b/libraries/libldap/cyrus.c @@ -599,16 +599,19 @@ ldap_int_sasl_bind( } } -#if SASL_VERSION_MAJOR >= 2 - /* XXX the application should free interact results. */ - if ( prompts != NULL && prompts->result != NULL ) { - LDAP_FREE( (void *)prompts->result ); - prompts->result = NULL; - } -#endif - if( saslrc == SASL_INTERACT ) { int res; + +#if SASL_VERSION_MAJOR >= 2 + /* XXX the application should free interact results. + * FIXME: this should happen only + * if saslrc == SASL_INTERACT */ + if ( prompts != NULL && prompts->result != NULL ) { + LDAP_FREE( (void *)prompts->result ); + prompts->result = NULL; + } +#endif + if( !interact ) break; res = (interact)( ld, flags, defaults, prompts ); if( res != LDAP_SUCCESS ) {