aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Essick <essick@google.com>2021-04-28 04:20:38 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-04-28 04:20:38 +0000
commit8925fb3e9cb20c044b7833cea53c504943293f10 (patch)
treea655b4d78476d87ae443687e02b5f4cb010e8b44
parent81a15055b33b409e4a09f5d6072c46fb15a1ca2b (diff)
parent7a4d9c6be3c02bd842eb431bd1a3230d0b94c21c (diff)
downloadtremolo-8925fb3e9cb20c044b7833cea53c504943293f10.tar.gz
Merge "Tremolo: Fix integer overflows in codebook.c" am: 7477bbdc0f am: 3b325558c0 am: 28a2a35c81 am: 7a4d9c6be3
Original change: https://android-review.googlesource.com/c/platform/external/tremolo/+/1652222 Change-Id: I6fc367a138d9631d1af02f1bf47399bb8145ed13
-rw-r--r--Tremolo/codebook.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/Tremolo/codebook.c b/Tremolo/codebook.c
index 43c4917..2fbb392 100644
--- a/Tremolo/codebook.c
+++ b/Tremolo/codebook.c
@@ -874,8 +874,11 @@ long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
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;