]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
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)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 17 Jun 2019 15:29:13 +0000 (15:29 +0000)
servers/slapd/overlays/rwm.c

index 36bceaffeb7a4b4251d472e1bb248532998f489c..2e24f24cc9b94be61c88dc959275741f2ab0a6b4 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 ) {