aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2019-02-06 17:03:33 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-02-06 17:03:33 -0800
commitc113668f321ef753fb522fc283f12397aa029c35 (patch)
tree4a1e275c60ecb8f5ed0bedb49be38e65ab872472
parent52bb122878cd1d81eb716b647fc674b6f3f159ea (diff)
parent14cbdba34798a8d99dfc7bde47be358ae9e855f9 (diff)
downloadtremolo-c113668f321ef753fb522fc283f12397aa029c35.tar.gz
[automerger] Add some error/overflow checks in codebook handling am: 6eb63e1192 am: bc4bde3bee am: 632704bab3 am: 9cea7b942e am: 57035e3928 am: 6d0e814689
am: 14cbdba347 Change-Id: Id4794c47d930d4aa61907983e3f38a84ed579648
-rw-r--r--Tremolo/codebook.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/Tremolo/codebook.c b/Tremolo/codebook.c
index 467640d..a06302d 100644
--- a/Tremolo/codebook.c
+++ b/Tremolo/codebook.c
@@ -376,14 +376,21 @@ long _book_maptype1_quantvals(codebook *b){
long acc=1;
long acc1=1;
int i;
- for(i=0;i<b->dim;i++){
- acc*=vals;
- acc1*=vals+1;
+ for (i = 0; i < b->dim; i++) {
+ if (acc > b->entries / vals) {
+ break;
+ }
+ acc *= vals;
+ if (acc1 > LONG_MAX / (vals + 1)) {
+ acc1 = LONG_MAX;
+ } else {
+ acc1 *= (vals + 1);
+ }
}
- if(acc<=b->entries && acc1>b->entries){
+ if (i >= b->dim && acc <= b->entries && acc1 > b->entries) {
return(vals);
}else{
- if(acc>b->entries){
+ if (i < b->dim || acc > b->entries) {
vals--;
}else{
vals++;