X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fsasl.c;h=c7b18ac91dd5a7f633a4e1924e40426ce3c1be2c;hb=3d39ff68a94e4455074707d763138f01aaa1c5b1;hp=20840958822fbda334f52b336dc502cf47bdc3a5;hpb=acbb5cf689a4336af05c9f259d909d8141055bac;p=openldap
diff --git a/libraries/libldap/sasl.c b/libraries/libldap/sasl.c
index 2084095882..c7b18ac91d 100644
--- a/libraries/libldap/sasl.c
+++ b/libraries/libldap/sasl.c
@@ -1,7 +1,7 @@
/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software .
*
- * Copyright 1998-2006 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -12,9 +12,6 @@
* 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.
- */
/*
* BindRequest ::= SEQUENCE {
@@ -22,10 +19,8 @@
* name DistinguishedName, -- who
* authentication CHOICE {
* simple [0] OCTET STRING -- passwd
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
- * krbv42ldap [1] OCTET STRING
- * krbv42dsa [2] OCTET STRING
-#endif
+ * krbv42ldap [1] OCTET STRING -- OBSOLETE
+ * krbv42dsa [2] OCTET STRING -- OBSOLETE
* sasl [3] SaslCredentials -- LDAPv3
* }
* }
@@ -196,7 +191,7 @@ ldap_sasl_bind_s(
}
#endif
- if ( ldap_result( ld, msgid, LDAP_MSG_ALL, NULL, &result ) == -1 ) {
+ if ( ldap_result( ld, msgid, LDAP_MSG_ALL, NULL, &result ) == -1 || !result ) {
return( ld->ld_errno ); /* ldap_result sets ld_errno */
}
@@ -206,7 +201,7 @@ ldap_sasl_bind_s(
rc = ldap_parse_sasl_bind_result( ld, result, &scredp, 0 );
}
- if ( rc != LDAP_SUCCESS && rc != LDAP_SASL_BIND_IN_PROGRESS ) {
+ if ( rc != LDAP_SUCCESS ) {
ldap_msgfree( result );
return( rc );
}
@@ -294,13 +289,8 @@ ldap_parse_sasl_bind_result(
}
if ( ld->ld_version < LDAP_VERSION2 ) {
-#ifdef LDAP_NULL_IS_NULL
tag = ber_scanf( ber, "{iA}",
&errcode, &ld->ld_error );
-#else /* ! LDAP_NULL_IS_NULL */
- tag = ber_scanf( ber, "{ia}",
- &errcode, &ld->ld_error );
-#endif /* ! LDAP_NULL_IS_NULL */
if( tag == LBER_ERROR ) {
ber_free( ber, 0 );
@@ -311,13 +301,8 @@ ldap_parse_sasl_bind_result(
} else {
ber_len_t len;
-#ifdef LDAP_NULL_IS_NULL
tag = ber_scanf( ber, "{eAA" /*}*/,
&errcode, &ld->ld_matched, &ld->ld_error );
-#else /* ! LDAP_NULL_IS_NULL */
- tag = ber_scanf( ber, "{eaa" /*}*/,
- &errcode, &ld->ld_matched, &ld->ld_error );
-#endif /* ! LDAP_NULL_IS_NULL */
if( tag == LBER_ERROR ) {
ber_free( ber, 0 );
@@ -362,7 +347,7 @@ ldap_parse_sasl_bind_result(
ldap_msgfree( res );
}
- return( ld->ld_errno );
+ return( LDAP_SUCCESS );
}
int