From: Ondřej Kuzník Date: Mon, 17 Jun 2019 10:49:25 +0000 (+0200) Subject: [PATCH] ITS#8964 Do not free original filter X-Git-Tag: archive/raspbian/2.4.47+dfsg-3+rpi1+deb10u4^2~5 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e04f3cfcfbc4d2e9bfe01d9685719fa9818a6e81;p=openldap.git [PATCH] ITS#8964 Do not free original filter Gbp-Pq: Name ITS-8964-Do-not-free-original-filter.patch --- diff --git a/servers/slapd/overlays/rwm.c b/servers/slapd/overlays/rwm.c index 3102d2df..86409c28 100644 --- a/servers/slapd/overlays/rwm.c +++ b/servers/slapd/overlays/rwm.c @@ -125,11 +125,15 @@ rwm_op_rollback( Operation *op, SlapReply *rs, rwm_op_state *ros ) break; case LDAP_REQ_SEARCH: op->o_tmpfree( ros->mapped_attrs, op->o_tmpmemctx ); - filter_free_x( op, op->ors_filter, 1 ); - op->o_tmpfree( op->ors_filterstr.bv_val, op->o_tmpmemctx ); op->ors_attrs = ros->ors_attrs; - op->ors_filter = ros->ors_filter; - op->ors_filterstr = ros->ors_filterstr; + if ( op->ors_filter != ros->ors_filter ) { + filter_free_x( op, op->ors_filter, 1 ); + op->ors_filter = ros->ors_filter; + } + if ( op->ors_filterstr.bv_val != ros->ors_filterstr.bv_val ) { + op->o_tmpfree( op->ors_filterstr.bv_val, op->o_tmpmemctx ); + op->ors_filterstr = ros->ors_filterstr; + } break; case LDAP_REQ_EXTENDED: if ( op->ore_reqdata != ros->ore_reqdata ) {