From a253df3100e1c0e99a223d643a3ab62ed8bda4c2 Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Thu, 4 Jan 2007 06:07:20 +0000
Subject: [PATCH] More for ITS#4638, double-free fix from HEAD

---
 servers/slapd/back-ldap/search.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c
index abd1019db5..a7645bd926 100644
--- a/servers/slapd/back-ldap/search.c
+++ b/servers/slapd/back-ldap/search.c
@@ -150,6 +150,7 @@ ldap_back_search(
 			msgid; 
 	struct berval	match = BER_BVNULL,
 			filter = BER_BVNULL;
+	int		free_filter = 0;
 	int		i;
 	char		**attrs = NULL;
 	int		freetext = 0;
@@ -237,6 +238,7 @@ retry:
 
 		case LDAP_FILTER_ERROR:
 			if ( ldap_back_munge_filter( op, &filter ) ) {
+				free_filter = 1;
 				goto retry;
 			}
 
@@ -495,7 +497,7 @@ finish:;
 		rs->sr_matched = save_matched;
 	}
 
-	if ( !BER_BVISNULL( &filter ) && filter.bv_val != op->ors_filterstr.bv_val ) {
+	if ( free_filter ) {
 		op->o_tmpfree( filter.bv_val, op->o_tmpmemctx );
 	}
 
-- 
GitLab