/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 1998-2007 The OpenLDAP Foundation.
+ * Copyright 1998-2009 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
int result = 1;
struct berval *bv;
AccessControlState acl_state = ACL_STATE_INIT;
+ char credNul = cred->bv_val[cred->bv_len];
#ifdef SLAPD_SPASSWD
void *old_authctx = NULL;
- ldap_pvt_thread_pool_setkey( op->o_threadctx, slap_sasl_bind,
- op->o_conn->c_sasl_authctx, NULL, &old_authctx, NULL );
+ ldap_pvt_thread_pool_setkey( op->o_threadctx, (void *)slap_sasl_bind,
+ op->o_conn->c_sasl_authctx, 0, &old_authctx, NULL );
#endif
+ if ( credNul ) cred->bv_val[cred->bv_len] = 0;
+
for ( bv = a->a_vals; bv->bv_val != NULL; bv++ ) {
/* if e is provided, check access */
if ( e && access_allowed( op, e, a->a_desc, bv,
}
}
+ if ( credNul ) cred->bv_val[cred->bv_len] = credNul;
+
#ifdef SLAPD_SPASSWD
- ldap_pvt_thread_pool_setkey( op->o_threadctx, slap_sasl_bind,
- old_authctx, NULL, NULL, NULL );
+ ldap_pvt_thread_pool_setkey( op->o_threadctx, (void *)slap_sasl_bind,
+ old_authctx, 0, NULL, NULL );
#endif
return result;