diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-03-30 23:19:00 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-03-30 23:19:00 +0000 |
commit | 0d90e69a90715fd339b25bf0943da61968579d6d (patch) | |
tree | 64c1a92dbaa1c067245ce8daf147f50a57803669 | |
parent | 1fbd6fdf90651223b49d235deb4224741ea2e9a8 (diff) | |
parent | 3ba0aeb348cda2918e9026801c50b6e3a78e82ac (diff) | |
download | tremolo-0d90e69a90715fd339b25bf0943da61968579d6d.tar.gz |
Snap for 5422062 from 3ba0aeb348cda2918e9026801c50b6e3a78e82ac to qt-release
Change-Id: Ife32ed175eb2c9ee881b8fed712f2345933f5828
-rw-r--r-- | Tremolo/codebook.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/Tremolo/codebook.c b/Tremolo/codebook.c index a06302d..8948cf3 100644 --- a/Tremolo/codebook.c +++ b/Tremolo/codebook.c @@ -825,12 +825,21 @@ static int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point) } add <<= shiftM; - for(i=0;i<s->dim;i++) - v[i]= ((add + v[i] * mul) >> shiftM); + ogg_int32_t tmp; + for(i=0;i<s->dim;i++) { + if (__builtin_mul_overflow(v[i], mul, &tmp) || + __builtin_add_overflow(tmp, add, &tmp)) { + return -1; + } + v[i] = tmp >> shiftM; + } if(s->q_seq) - for(i=1;i<s->dim;i++) - v[i]+=v[i-1]; + for(i=1;i<s->dim;i++) { + if (__builtin_add_overflow(v[i], v[i-1], &v[i])) { + return -1; + } + } } return 0; |