aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2012-11-21 16:04:45 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2012-11-21 16:04:45 +0100
commitaaaefb9d5a04e28ec89e8fc564076d8eae18ca93 (patch)
tree774fe87fcbefd0504aa31e0ac71f76fae242e13c /gcc
parent5a09d908bcbc74f78d066568c6d535c1e9d6d3fd (diff)
downloadgcc-aaaefb9d5a04e28ec89e8fc564076d8eae18ca93.zip
gcc-aaaefb9d5a04e28ec89e8fc564076d8eae18ca93.tar.gz
gcc-aaaefb9d5a04e28ec89e8fc564076d8eae18ca93.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/profile.c10
2 files changed, 12 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7191a15..5e43601 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
* config/aarch64/t-aarch64-linux: Define MULTIARCH_DIRNAME for
@@ -1400,7 +1406,7 @@
* cppdefault.h (default_include): Document multiarch in multilib
member.
* 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.
* config.gcc <i[34567]86-*-linux* | x86_64-*-linux*> (tmake_file):
Include i386/t-linux.
diff --git a/gcc/profile.c b/gcc/profile.c
index 194ef91..bbe02b1 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -288,11 +288,11 @@ compute_working_sets (void)
else
tmp_cum = cum + histo_bucket->cum_value;
- /* Next walk through successive working set entries and fill in
- the statistics for any whose size we have reached by accumulating
- this histogram counter. */
- while (tmp_cum >= working_set_cum_values[ws_ix]
- && ws_ix < NUM_GCOV_WORKING_SETS)
+ /* Next walk through successive working set entries and fill in
+ the statistics for any whose size we have reached by accumulating
+ this histogram counter. */
+ while (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].min_counter