From: Kurt Zeilenga Date: Wed, 10 May 2006 16:53:20 +0000 (+0000) Subject: ITS#4532 fix X-Git-Tag: OPENLDAP_REL_ENG_2_3_22~14 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=b371199b68eef73ff69dc212cb874f9baadc9679;p=openldap ITS#4532 fix --- diff --git a/CHANGES b/CHANGES index 201f08035d..c2918c0a76 100644 --- a/CHANGES +++ b/CHANGES @@ -14,6 +14,7 @@ OpenLDAP 2.3.22 Engineering Fixed slapd runqueue use of freed memory (ITS#4517) Fixed slapd slap_send_ldap_result bug (ITS#4499) Fixed slapd thread pool init issue (ITS#4513) + Fixed slapd-bdb pre/post-read freeing (ITS#4532) Added slapd syncrepl mandatory searchbase check Fixed slapadd cn=config issue (ITS#4194) Fixed slapd-ldap proxyAuthz of bound identity/override (ITS#4497) diff --git a/servers/slapd/back-bdb/add.c b/servers/slapd/back-bdb/add.c index cd37908a20..9a57f7c5a8 100644 --- a/servers/slapd/back-bdb/add.c +++ b/servers/slapd/back-bdb/add.c @@ -417,7 +417,7 @@ return_results: } op->o_private = NULL; - if( postread_ctrl != NULL ) { + if( postread_ctrl != NULL && (*postread_ctrl) != NULL ) { slap_sl_free( (*postread_ctrl)->ldctl_value.bv_val, op->o_tmpmemctx ); slap_sl_free( *postread_ctrl, op->o_tmpmemctx ); } diff --git a/servers/slapd/back-bdb/delete.c b/servers/slapd/back-bdb/delete.c index 14815d5d7b..6f15abbbf9 100644 --- a/servers/slapd/back-bdb/delete.c +++ b/servers/slapd/back-bdb/delete.c @@ -527,7 +527,7 @@ return_results: send_ldap_result( op, rs ); slap_graduate_commit_csn( op ); - if( preread_ctrl != NULL ) { + if( preread_ctrl != NULL && (*preread_ctrl) != NULL ) { slap_sl_free( (*preread_ctrl)->ldctl_value.bv_val, op->o_tmpmemctx ); slap_sl_free( *preread_ctrl, op->o_tmpmemctx ); } diff --git a/servers/slapd/back-bdb/modify.c b/servers/slapd/back-bdb/modify.c index 21faa993e6..4854b9e40e 100644 --- a/servers/slapd/back-bdb/modify.c +++ b/servers/slapd/back-bdb/modify.c @@ -607,11 +607,11 @@ done: bdb_unlocked_cache_return_entry_w (&bdb->bi_cache, e); } - if( preread_ctrl != NULL ) { + if( preread_ctrl != NULL && (*preread_ctrl) != NULL ) { slap_sl_free( (*preread_ctrl)->ldctl_value.bv_val, op->o_tmpmemctx ); slap_sl_free( *preread_ctrl, op->o_tmpmemctx ); } - if( postread_ctrl != NULL ) { + if( postread_ctrl != NULL && (*postread_ctrl) != NULL ) { slap_sl_free( (*postread_ctrl)->ldctl_value.bv_val, op->o_tmpmemctx ); slap_sl_free( *postread_ctrl, op->o_tmpmemctx ); } diff --git a/servers/slapd/back-bdb/modrdn.c b/servers/slapd/back-bdb/modrdn.c index e63d71286e..73a35df708 100644 --- a/servers/slapd/back-bdb/modrdn.c +++ b/servers/slapd/back-bdb/modrdn.c @@ -826,11 +826,11 @@ done: } op->o_private = NULL; - if( preread_ctrl != NULL ) { + if( preread_ctrl != NULL && (*preread_ctrl) != NULL ) { slap_sl_free( (*preread_ctrl)->ldctl_value.bv_val, op->o_tmpmemctx ); slap_sl_free( *preread_ctrl, op->o_tmpmemctx ); } - if( postread_ctrl != NULL ) { + if( postread_ctrl != NULL && (*postread_ctrl) != NULL ) { slap_sl_free( (*postread_ctrl)->ldctl_value.bv_val, op->o_tmpmemctx ); slap_sl_free( *postread_ctrl, op->o_tmpmemctx ); } diff --git a/servers/slapd/result.c b/servers/slapd/result.c index fbf6a04a5b..b8ea936aa8 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -1476,6 +1476,7 @@ int slap_read_controls( myop.o_bd = NULL; myop.o_res_ber = ber; myop.o_callback = NULL; + myop.ors_slimit = 1; rc = slap_send_search_entry( &myop, rs ); if( rc ) return rc;