[PATCH] ITS#8964 Do not free original filter
authorOndřej Kuzník <ondra@mistotebe.net>
Mon, 17 Jun 2019 10:49:25 +0000 (12:49 +0200)
committerRyan Tandy <ryan@nardis.ca>
Fri, 22 Jan 2021 03:54:40 +0000 (03:54 +0000)
Gbp-Pq: Name ITS-8964-Do-not-free-original-filter.patch

servers/slapd/overlays/rwm.c

index 3102d2df01dfab135e0e39bff30969d1a866ca60..86409c28fc51754fb1e7f6d686aa7a23fec621bc 100644 (file)
@@ -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 ) {