diff options
author | Marco Nelissen <marcone@google.com> | 2019-02-06 17:05:16 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-02-06 17:05:16 -0800 |
commit | efa0f5bc300984c24188213e0d650f1da34d2a09 (patch) | |
tree | 999d3be518eb2363e18cf6140414d699f64c2427 | |
parent | 1e9c73304401c81a912e1a73aa60633990bf7420 (diff) | |
parent | c113668f321ef753fb522fc283f12397aa029c35 (diff) | |
download | tremolo-efa0f5bc300984c24188213e0d650f1da34d2a09.tar.gz |
[automerger] Add some error/overflow checks in codebook handling am: 6eb63e1192 am: bc4bde3bee am: 632704bab3 am: 9cea7b942e am: 57035e3928 am: 6d0e814689 am: 14cbdba347android-9.0.0_r47android-9.0.0_r45android-9.0.0_r42pie-qpr3-b-release
am: c113668f32
Change-Id: I837b06b16ecd03a237cf0eefb9c63ca442cbce25
-rw-r--r-- | Tremolo/codebook.c | 17 |
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++; |