From 3fa3e6ac17cbab8003ce3b3ae87928de5f5eaaf4 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 3 Jun 2024 07:34:56 +0200 Subject: Adding upstream version 2.6.8+dfsg. Signed-off-by: Daniel Baumann --- servers/slapd/back-meta/bind.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'servers/slapd/back-meta/bind.c') diff --git a/servers/slapd/back-meta/bind.c b/servers/slapd/back-meta/bind.c index edfabbb..2fce8dd 100644 --- a/servers/slapd/back-meta/bind.c +++ b/servers/slapd/back-meta/bind.c @@ -1,7 +1,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1999-2022 The OpenLDAP Foundation. + * Copyright 1999-2024 The OpenLDAP Foundation. * Portions Copyright 2001-2003 Pierangelo Masarati. * Portions Copyright 1999-2003 Howard Chu. * All rights reserved. @@ -89,10 +89,11 @@ meta_back_bind( Operation *op, SlapReply *rs ) return rs->sr_err; } + candidates = meta_back_candidates_get( op ); /* we need meta_back_getconn() not send result even on error, * because we want to intercept the error and make it * invalidCredentials */ - mc = meta_back_getconn( op, rs, NULL, LDAP_BACK_BIND_DONTSEND ); + mc = meta_back_getconn( op, rs, NULL, LDAP_BACK_BIND_DONTSEND, candidates ); if ( !mc ) { Debug(LDAP_DEBUG_ANY, "%s meta_back_bind: no target " "for dn \"%s\" (%d%s%s).\n", @@ -110,11 +111,10 @@ meta_back_bind( Operation *op, SlapReply *rs ) break; } send_ldap_result( op, rs ); + op->o_tmpfree( candidates, op->o_tmpmemctx ); return rs->sr_err; } - candidates = meta_back_candidates_get( op ); - /* * Each target is scanned ... */ @@ -284,10 +284,12 @@ meta_back_bind( Operation *op, SlapReply *rs ) rs->sr_err = slap_map_api2result( rs ); } send_ldap_result( op, rs ); + op->o_tmpfree( candidates, op->o_tmpmemctx ); return rs->sr_err; } + op->o_tmpfree( candidates, op->o_tmpmemctx ); return LDAP_SUCCESS; } @@ -672,7 +674,8 @@ meta_back_dobind( Operation *op, SlapReply *rs, metaconn_t *mc, - ldap_back_send_t sendok ) + ldap_back_send_t sendok, + SlapReply *candidates ) { metainfo_t *mi = ( metainfo_t * )op->o_bd->be_private; @@ -680,8 +683,6 @@ meta_back_dobind( i, isroot = 0; - SlapReply *candidates; - if ( be_isroot( op ) ) { isroot = 1; } @@ -704,8 +705,6 @@ meta_back_dobind( goto done; } - candidates = meta_back_candidates_get( op ); - for ( i = 0; i < mi->mi_ntargets; i++ ) { metatarget_t *mt = mi->mi_targets[ i ]; metasingleconn_t *msc = &mc->mc_conns[ i ]; @@ -761,7 +760,7 @@ retry_binding:; if ( rc == LDAP_UNAVAILABLE ) { /* FIXME: meta_back_retry() already re-calls * meta_back_single_dobind() */ - if ( meta_back_retry( op, rs, &mc, i, sendok ) ) { + if ( meta_back_retry( op, rs, &mc, i, sendok, candidates ) ) { goto retry_ok; } -- cgit v1.2.3