From: Pierangelo Masarati Date: Mon, 18 Dec 2006 01:29:07 +0000 (+0000) Subject: catch double free X-Git-Tag: OPENLDAP_REL_ENG_2_4_4ALPHA~8^2~349 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f52bb3d2c7a8881f629bf9814b3e47a782303e55;p=thirdparty%2Fopenldap.git catch double free --- diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index c15f571e00..c7a2054166 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -152,6 +152,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; @@ -239,6 +240,7 @@ retry: case LDAP_FILTER_ERROR: if ( ldap_back_munge_filter( op, &filter ) ) { + free_filter = 1; goto retry; } @@ -498,7 +500,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 ); }