diff options
author | Xin Li <delphij@google.com> | 2019-09-05 16:53:24 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-09-05 16:53:24 +0000 |
commit | e6992e6e3633164224337d3fc9c821e6190dc76f (patch) | |
tree | 57450390cce9308a455e9d877e979a8ef4783dd8 | |
parent | b1d9279d8d90c2d48e533cb845b384d90940232c (diff) | |
parent | 7993be3ca847d2c1b75e162c79a253df43542cf4 (diff) | |
download | tremolo-ndk-sysroot-r21.tar.gz |
Merge "DO NOT MERGE - Merge Android 10 into master"ndk-sysroot-r21
-rw-r--r-- | Android.bp | 8 | ||||
-rw-r--r-- | Tremolo/codebook.c | 17 |
2 files changed, 18 insertions, 7 deletions
@@ -1,9 +1,6 @@ cc_library { name: "libvorbisidec", vendor_available: true, - vndk: { - enabled: true, - }, srcs: [ "Tremolo/bitwise.c", @@ -65,4 +62,9 @@ cc_library { export_include_dirs: ["."], shared_libs: ["liblog"], + + sanitize: { + integer_overflow: true, + misc_undefined: ["bounds"], + }, } 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; |