From d4a9e0ece045bba4ae752fe90ae3df44ef41aec6 Mon Sep 17 00:00:00 2001 From: Luke Howard Date: Fri, 18 Apr 2003 08:21:12 +0000 Subject: [PATCH] Fix crasher when duplicating substring assertions --- servers/slapd/slapi/slapi_utils.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/servers/slapd/slapi/slapi_utils.c b/servers/slapd/slapi/slapi_utils.c index b1e92aae0e..5f49d2a5ff 100644 --- a/servers/slapd/slapi/slapi_utils.c +++ b/servers/slapd/slapi/slapi_utils.c @@ -1503,18 +1503,23 @@ slapi_filter_dup( Slapi_Filter *filter ) f->f_mra->ma_desc = filter->f_mra->ma_desc; f->f_mra->ma_dnattrs = filter->f_mra->ma_dnattrs; ber_dupbv( &f->f_mra->ma_value, &filter->f_mra->ma_value ); + break; case LDAP_FILTER_SUBSTRINGS: { int i; f->f_sub = (SubstringsAssertion *)slapi_ch_malloc( sizeof(SubstringsAssertion) ); ber_dupbv( &f->f_sub_initial, &filter->f_sub_initial ); - for ( i = 0; filter->f_sub_any[i].bv_val != NULL; i++ ) - ; - f->f_sub_any = (BerVarray)slapi_ch_malloc( (i + 1) * (sizeof(struct berval)) ); - for ( i = 0; filter->f_sub_any[i].bv_val != NULL; i++ ) { - ber_dupbv( &f->f_sub_any[i], &filter->f_sub_any[i] ); + if ( filter->f_sub_any != NULL ) { + for ( i = 0; filter->f_sub_any[i].bv_val != NULL; i++ ) + ; + f->f_sub_any = (BerVarray)slapi_ch_malloc( (i + 1) * (sizeof(struct berval)) ); + for ( i = 0; filter->f_sub_any[i].bv_val != NULL; i++ ) { + ber_dupbv( &f->f_sub_any[i], &filter->f_sub_any[i] ); + } + f->f_sub_any[i].bv_val = NULL; + } else { + f->f_sub_any = NULL; } - f->f_sub_any[i].bv_val = NULL; ber_dupbv( &f->f_sub_final, &filter->f_sub_final ); break; } -- 2.39.5