diff --git a/CHANGES b/CHANGES index 52de6498f9855aedd50f0803ddd9d352fc853cfc..061abbe3c10b40d4688358603dcf7c88277c0f29 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ OpenLDAP 2.4 Change Log OpenLDAP 2.4.20 Engineering Fixed libldap uninitialized return value (ITS#6355) Fixed slapd debug handling of LDAP_DEBUG_ANY (ITS#6324) + Fixed slapd-ldap leak (ITS#6326) Documentation ldap_get_dn(3) typos (ITS#5366) diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index c7458285016c94470e2e168ae306e56778d6f452..c8ccbed0ec2585e074eedde63dd5d80007983a3b 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -759,6 +759,7 @@ ldap_build_entry( ( oc = oc_bvfind_undef( &attr->a_vals[i] ) ) != NULL ) { ber_dupbv( &pval, &oc->soc_cname ); + rc = LDAP_SUCCESS; } else { LBER_FREE( attr->a_vals[i].bv_val ); @@ -770,8 +771,9 @@ ldap_build_entry( BER_BVZERO( &attr->a_vals[last] ); i--; } + } - } else if ( pretty ) { + if ( rc == LDAP_SUCCESS && pretty ) { LBER_FREE( attr->a_vals[i].bv_val ); attr->a_vals[i] = pval; }