]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix completely bogus array indexing introduced in r15927 -- how did this
authorJulian Seward <jseward@acm.org>
Fri, 5 Aug 2016 17:22:21 +0000 (17:22 +0000)
committerJulian Seward <jseward@acm.org>
Fri, 5 Aug 2016 17:22:21 +0000 (17:22 +0000)
ever work?  Spotted by UBSAN.  Yay UBSAN!  Also update comments.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15929

memcheck/mc_translate.c

index a009210786b2ca5f3ad3ab18dd6c56bc6225823c..d0a8c7730f6ec3f604c40ab8579b9c8368ac1d8f 100644 (file)
@@ -6612,35 +6612,35 @@ IRSB* MC_(instrument) ( VgCallbackClosure* closure,
 
    bz2-32
 
-   1   111,840 -> 1,702,810; ratio 15.2
-   2   111,840 -> 1,656,644; ratio 14.8
-   3   111,840 -> 1,650,457; ratio 14.7
-   4   111,840 -> 1,649,103; ratio 14.7
-   5   111,840 -> 1,648,655; ratio 14.7
-   6   111,840 -> 1,648,435; ratio 14.7
-   7   111,840 -> 1,648,304; ratio 14.7
-   8   111,840 -> 1,648,304; ratio 14.7
-   10  111,840 -> 1,648,171; ratio 14.7
-   12  111,840 -> 1,648,109  ratio 14.7
-   16  111,840 -> 1,647,947; ratio 14.7
-   32  111,840 -> 1,647,881; ratio 14.7
-   inf 111,840 -> 1,647,881; ratio 14.7
+   1   4,336 (112,212 -> 1,709,473; ratio 15.2)
+   2   4,336 (112,194 -> 1,669,895; ratio 14.9)
+   3   4,336 (112,194 -> 1,660,713; ratio 14.8)
+   4   4,336 (112,194 -> 1,658,555; ratio 14.8)
+   5   4,336 (112,194 -> 1,655,447; ratio 14.8)
+   6   4,336 (112,194 -> 1,655,101; ratio 14.8)
+   7   4,336 (112,194 -> 1,654,858; ratio 14.7)
+   8   4,336 (112,194 -> 1,654,810; ratio 14.7)
+   10  4,336 (112,194 -> 1,654,621; ratio 14.7)
+   12  4,336 (112,194 -> 1,654,678; ratio 14.7)
+   16  4,336 (112,194 -> 1,654,494; ratio 14.7)
+   32  4,336 (112,194 -> 1,654,602; ratio 14.7)
+   inf 4,336 (112,194 -> 1,654,602; ratio 14.7)
 
    bz2-64
 
-   1   106,628 -> 1,811,992; ratio 17.0
-   2   106,628 -> 1,797,805; ratio 16.9
-   3   106,628 -> 1,792,429; ratio 16.8
-   4   106,628 -> 1,791,037; ratio 16.8
-   5   106,628 -> 1,790,929; ratio 16.8
-   6   106,628 -> 1,790,810; ratio 16.8
-   7   106,628 -> 1,790,764; ratio 16.8
-   8   106,628 -> 1,790,764; ratio 16.8
-   10  106,628 -> 1,790,764; ratio 16.8
-   12  106,628 -> 1,790,764; ratio 16.8
-   16  106,628 -> 1,790,701; ratio 16.8
-   32  106,628 -> 1,790,671; ratio 16.8
-   inf 106,628 -> 1,790,671; ratio 16.8
+   1   4,113 (107,329 -> 1,822,171; ratio 17.0)
+   2   4,113 (107,329 -> 1,806,443; ratio 16.8)
+   3   4,113 (107,329 -> 1,803,967; ratio 16.8)
+   4   4,113 (107,329 -> 1,802,785; ratio 16.8)
+   5   4,113 (107,329 -> 1,802,412; ratio 16.8)
+   6   4,113 (107,329 -> 1,802,062; ratio 16.8)
+   7   4,113 (107,329 -> 1,801,976; ratio 16.8)
+   8   4,113 (107,329 -> 1,801,886; ratio 16.8)
+   10  4,113 (107,329 -> 1,801,653; ratio 16.8)
+   12  4,113 (107,329 -> 1,801,526; ratio 16.8)
+   16  4,113 (107,329 -> 1,801,298; ratio 16.8)
+   32  4,113 (107,329 -> 1,800,827; ratio 16.8)
+   inf 4,113 (107,329 -> 1,800,827; ratio 16.8)
 */
 
 /* Structs for recording which (helper, guard) pairs we have already
@@ -6734,7 +6734,7 @@ Bool check_or_add ( Pairs* tidyingEnv, IRExpr* guard, void* entry )
    tl_assert(i == n);
    if (n == N_TIDYING_PAIRS) {
       for (i = 1; i < N_TIDYING_PAIRS; i++) {
-         tidyingEnv[n-1] = tidyingEnv[n];
+         tidyingEnv->pairs[i-1] = tidyingEnv->pairs[i];
       }
       tidyingEnv->pairs[N_TIDYING_PAIRS-1].entry = entry;
       tidyingEnv->pairs[N_TIDYING_PAIRS-1].guard = guard;