From: Kurt Zeilenga Date: Tue, 9 Jul 2002 00:20:30 +0000 (+0000) Subject: Fix matched values zero allocation bug (ITS#1931) X-Git-Tag: NO_SLAP_OP_BLOCKS~1380 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=fffd84ff9f7b757d4e60e1d14c75f8af240b8930;p=openldap Fix matched values zero allocation bug (ITS#1931) --- 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 ); }