aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin Li <delphij@google.com>2019-09-05 16:53:24 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-09-05 16:53:24 +0000
commite6992e6e3633164224337d3fc9c821e6190dc76f (patch)
tree57450390cce9308a455e9d877e979a8ef4783dd8
parentb1d9279d8d90c2d48e533cb845b384d90940232c (diff)
parent7993be3ca847d2c1b75e162c79a253df43542cf4 (diff)
downloadtremolo-ndk-sysroot-r21.tar.gz
Merge "DO NOT MERGE - Merge Android 10 into master"ndk-sysroot-r21
-rw-r--r--Android.bp8
-rw-r--r--Tremolo/codebook.c17
2 files changed, 18 insertions, 7 deletions
diff --git a/Android.bp b/Android.bp
index 080b563..70cfe14 100644
--- a/Android.bp
+++ b/Android.bp
@@ -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;