From 1580bebf61d090c01ffdee71d9a17551106604c5 Mon Sep 17 00:00:00 2001 From: Noriko Hosoi Date: Apr 18 2008 20:18:59 +0000 Subject: Resolves: #428764 Summary: memory leaks in extensible filter code Description: applying the patch provided by Ulf Weltman 1) type is not consumed in attrlist_merge 2) although dnattrs is a linked list, only the first item was released. Test case filter: "(ou:dn:=groups)" --- diff --git a/ldap/servers/slapd/filterentry.c b/ldap/servers/slapd/filterentry.c index 317c4f2..1e7ab8b 100644 --- a/ldap/servers/slapd/filterentry.c +++ b/ldap/servers/slapd/filterentry.c @@ -441,6 +441,7 @@ dn2attrs(const char *dn) bv.bv_len = strlen(val); bvec[0] = &bv; attrlist_merge (&dnAttrs, type, bvec); + slapi_ch_free_string( &type ); } } ldap_value_free (avas); @@ -505,7 +506,7 @@ test_extensible_filter( /* B) Also check the DN attributes for the attribute value */ Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e)); rc= test_ava_filter( callers_pb, e, dnattrs, &a, LDAP_FILTER_EQUALITY, 0 /* Don't Verify Access */ , 0 /* don't just verify access */, access_check_done ); - slapi_attr_free( &dnattrs ); + attrlist_free( dnattrs ); } } else @@ -520,7 +521,7 @@ test_extensible_filter( /* D & F) Also check the DN attributes for the attribute value */ Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e)); mrf->mrf_match (mrf->mrf_object, e, dnattrs); - slapi_attr_free( &dnattrs ); + attrlist_free( dnattrs ); } } } @@ -573,7 +574,7 @@ test_extensible_filter( /* B) Also check the DN attributes for the attribute value */ Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e)); rc= test_ava_filter( callers_pb, e, dnattrs, &a, LDAP_FILTER_EQUALITY, 0 /* Don't Verify Access */ , 0 /* don't just verify access */, access_check_done ); - slapi_attr_free( &dnattrs ); + attrlist_free( dnattrs ); } } else @@ -588,7 +589,7 @@ test_extensible_filter( /* D & F) Also check the DN attributes for the attribute value */ Slapi_Attr* dnattrs= dn2attrs(slapi_entry_get_dn_const(e)); mrf->mrf_match (mrf->mrf_object, e, dnattrs); - slapi_attr_free( &dnattrs ); + attrlist_free( dnattrs ); } } }