From fffd84ff9f7b757d4e60e1d14c75f8af240b8930 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 9 Jul 2002 00:20:30 +0000 Subject: [PATCH] Fix matched values zero allocation bug (ITS#1931) --- servers/slapd/result.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/servers/slapd/result.c b/servers/slapd/result.c index b6099f4cf2..d2def63547 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -727,7 +727,7 @@ send_search_entry( : an_find( attrs, &AllOper ); /* create an array of arrays of flags. Each flag corresponds - * to particular value of attribute an equals 1 if value matches + * to particular value of attribute and equals 1 if value matches * to ValuesReturnFilter or 0 if not */ for ( a = e->e_attrs, i=0; a != NULL; a = a->a_next ) i++; @@ -736,16 +736,19 @@ send_search_entry( for ( a = e->e_attrs, i=0; a != NULL; a = a->a_next, i++ ) { for ( j = 0; a->a_vals[j].bv_val != NULL; j++ ); - a_flags = ch_calloc ( j, sizeof(char) ); - /* If no ValuesReturnFilter control return everything */ - if ( op->vrFilter == NULL ){ - memset(a_flags, 1, j); + if( j ) { + a_flags = ch_calloc ( j, sizeof(char) ); + /* If no ValuesReturnFilter control return everything */ + if ( op->vrFilter == NULL ) { + memset(a_flags, 1, j); + } + } else { + a_flags = NULL; } e_flags[i] = a_flags; } - if ( op->vrFilter != NULL ){ - + if ( op->vrFilter != NULL ) { rc = filter_matched_values(be, conn, op, e->e_attrs, &e_flags) ; if ( rc == -1 ) { @@ -932,8 +935,7 @@ send_search_entry( e_flags[i] = a_flags; } - if ( op->vrFilter != NULL ){ - + if ( op->vrFilter != NULL ) { rc = filter_matched_values(be, conn, op, aa, &e_flags) ; if ( rc == -1 ) { @@ -1329,7 +1331,6 @@ str2result( s, 0, 0 ); #endif - return( -1 ); } -- 2.39.5