- if ( use_tls && ldap_start_tls_s( ld, NULL, NULL ) != LDAP_SUCCESS ) {
- if ( use_tls > 1 ) {
- ldap_perror( ld, "ldap_start_tls" );
- return( EXIT_FAILURE );
- }
- fprintf( stderr, "WARNING: could not start TLS\n" );
- }
-
- if ( authmethod == LDAP_AUTH_SASL ) {
-#ifdef HAVE_CYRUS_SASL
- int minssf = 0, maxssf = 0;
-
- if ( sasl_integrity > 0 )
- maxssf = 1;
- if ( sasl_integrity > 1 )
- minssf = 1;
- if ( sasl_privacy > 0 )
- maxssf = 100000; /* Something big value */
- if ( sasl_privacy > 1 )
- minssf = 56;
-
- if ( ldap_set_option( ld, LDAP_OPT_X_SASL_MINSSF,
- (void *)&minssf ) != LDAP_OPT_SUCCESS ) {
- fprintf( stderr, "Could not set LDAP_OPT_X_SASL_MINSSF"
- "%d\n", minssf);
- return( EXIT_FAILURE );
- }
- if ( ldap_set_option( ld, LDAP_OPT_X_SASL_MAXSSF,
- (void *)&maxssf ) != LDAP_OPT_SUCCESS ) {
- fprintf( stderr, "Could not set LDAP_OPT_X_SASL_MAXSSF"
- "%d\n", maxssf);
- return( EXIT_FAILURE );
- }
-
- rc = ldap_negotiated_sasl_bind_s( ld, binddn, sasl_authc_id,
- sasl_authz_id, sasl_mech,
- passwd.bv_len ? &passwd : NULL,
- NULL, NULL );
-
- if( rc != LDAP_SUCCESS ) {
- ldap_perror( ld, "ldap_negotiated_sasl_bind_s" );
- return( EXIT_FAILURE );
- }
-#else
- fprintf( stderr, "%s was not compiled with SASL support\n",
- argv[0] );
- return( EXIT_FAILURE );
-#endif
- }
- else {
- if ( ldap_bind_s( ld, binddn, passwd.bv_val, authmethod )
- != LDAP_SUCCESS ) {
- ldap_perror( ld, "ldap_bind" );
- return( EXIT_FAILURE );
- }
- }
-
- if( dn != NULL || oldpw != NULL || newpw != NULL ) {