From 9496132d281aac87d39a862fb9db5b588cd47845 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Fri, 13 Jun 2025 08:06:15 +0100 Subject: [PATCH] ITS#10347 Be explicit about managing attr_bv storage --- contrib/slapd-modules/comp_match/init.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/contrib/slapd-modules/comp_match/init.c b/contrib/slapd-modules/comp_match/init.c index c3ab83c9b4..c9286f2dfe 100644 --- a/contrib/slapd-modules/comp_match/init.c +++ b/contrib/slapd-modules/comp_match/init.c @@ -322,6 +322,7 @@ comp_convert_asn_to_ldap ( MatchingRule* mr, ComponentSyntaxInfo* csi, struct be else csi->csi_syntax = NULL; + BER_BVZERO( bv ); switch ( csi->csi_comp_desc->cd_type_id ) { case BASICTYPE_BOOLEAN : @@ -428,9 +429,9 @@ comp_convert_asn_to_ldap ( MatchingRule* mr, ComponentSyntaxInfo* csi, struct be rc = csi->csi_syntax->ssyn_pretty(csi->csi_syntax, bv, &prettied , NULL ); if ( rc != LDAP_SUCCESS ) return LDAP_INVALID_SYNTAX; -#if 0 - free ( bv->bv_val );/*potential memory leak?*/ -#endif + if ( bv->bv_val ) + free( bv->bv_val ); + *allocated = 1; bv->bv_val = prettied.bv_val; bv->bv_len = prettied.bv_len; } @@ -555,8 +556,12 @@ comp_test_one_component ( struct berval* assert_bv = &ca->ca_ma_value; int allocated = 0; /*Attribute is converted to compatible LDAP encodings*/ - if ( comp_convert_asn_to_ldap( mr, csi_attr, &attr_bv, &allocated ) != LDAP_SUCCESS ) + if ( comp_convert_asn_to_ldap( mr, csi_attr, &attr_bv, + &allocated ) != LDAP_SUCCESS ) { + if ( allocated ) + free( attr_bv.bv_val ); return LDAP_INAPPROPRIATE_MATCHING; + } /* extracted component value is not normalized */ if ( ca->ca_ma_rule->smr_normalize ) { rc = ca->ca_ma_rule->smr_normalize ( -- 2.47.2