re PR gcov-profile/55417 (AddressSanitizer reports stack-buffer-overflow in profiling code)

PR gcov-profile/55417
	* profile.c (compute_working_sets): Check index first
	to avoid out-of-bounds array access.

From-SVN: r193697
This commit is contained in:
Teresa Johnson 2012-11-21 16:04:45 +01:00 committed by Jakub Jelinek
parent 5a09d908bc
commit aaaefb9d5a
2 changed files with 12 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2012-11-21 Teresa Johnson <tejohnson@google.com>
PR gcov-profile/55417
* profile.c (compute_working_sets): Check index first
to avoid out-of-bounds array access.
2012-11-21 Matthias Klose <doko@ubuntu.com> 2012-11-21 Matthias Klose <doko@ubuntu.com>
* config/aarch64/t-aarch64-linux: Define MULTIARCH_DIRNAME for * config/aarch64/t-aarch64-linux: Define MULTIARCH_DIRNAME for
@ -1400,7 +1406,7 @@
* cppdefault.h (default_include): Document multiarch in multilib * cppdefault.h (default_include): Document multiarch in multilib
member. member.
* cppdefault.c: [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an * cppdefault.c: [LOCAL_INCLUDE_DIR, STANDARD_INCLUDE_DIR] Add an
include directory for multiarch directories. include directory for multiarch directories.
* common.opt: New options --print-multiarch and -imultilib. * common.opt: New options --print-multiarch and -imultilib.
* config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file): * config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file):
Include i386/t-linux. Include i386/t-linux.

View File

@ -288,11 +288,11 @@ compute_working_sets (void)
else else
tmp_cum = cum + histo_bucket->cum_value; tmp_cum = cum + histo_bucket->cum_value;
/* Next walk through successive working set entries and fill in /* Next walk through successive working set entries and fill in
the statistics for any whose size we have reached by accumulating the statistics for any whose size we have reached by accumulating
this histogram counter. */ this histogram counter. */
while (tmp_cum >= working_set_cum_values[ws_ix] while (ws_ix < NUM_GCOV_WORKING_SETS
&& ws_ix < NUM_GCOV_WORKING_SETS) && tmp_cum >= working_set_cum_values[ws_ix])
{ {
gcov_working_sets[ws_ix].num_counters = count; gcov_working_sets[ws_ix].num_counters = count;
gcov_working_sets[ws_ix].min_counter gcov_working_sets[ws_ix].min_counter