commit | 3b325558c0788ea19fcbab51b4b3dc6758d26ffe | [log] [tgz] |
---|---|---|
author | Ray Essick <essick@google.com> | Wed Apr 28 03:05:31 2021 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Wed Apr 28 03:05:31 2021 +0000 |
tree | aecffb3d8e880ed161f4540b38dc7ad7591b1060 | |
parent | 6d606fa3602d7676ee440d837073f4e72b4bf6f0 [diff] | |
parent | 7477bbdc0ffb428ee47e16a40f2976121b2487aa [diff] |
Merge "Tremolo: Fix integer overflows in codebook.c" am: 7477bbdc0f Original change: https://android-review.googlesource.com/c/platform/external/tremolo/+/1652222 Change-Id: I69c1e38c7d9d06593adb6131a891b23858d48d88
diff --git a/Tremolo/codebook.c b/Tremolo/codebook.c index 84721e7..5db6b60 100644 --- a/Tremolo/codebook.c +++ b/Tremolo/codebook.c
@@ -873,8 +873,11 @@ if (!v) return -1; for(i=0;i<n;){ if(decode_map(book,b,v,point))return -1; - for (j=0;j<book->dim && i < n;j++) - a[i++]+=v[j]; + for (j=0;j<book->dim && i < n;j++,i++){ + if (__builtin_add_overflow(a[i], v[j], &a[i])) { + a[i] = v[j] > 0 ? INT32_MAX : INT32_MIN; + } + } } } return 0;