commit | a3354a219068001848efa811a6cdf96c08b318bc | [log] [tgz] |
---|---|---|
author | Treehugger Robot <treehugger-gerrit@google.com> | Sat Nov 17 00:44:09 2018 +0000 |
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | Sat Nov 17 00:44:09 2018 +0000 |
tree | 678f55ff5638cc42113db775615606b09512d2d8 | |
parent | a864ea5f2d034069a3ede5fef9180e702666ee37 [diff] | |
parent | 5bd8b6a66c56cf6e21a145585f86c94b1a84cd7f [diff] |
Merge "Avoid add overflow in summation in AMR-WB decoder"
diff --git a/media/libstagefright/codecs/amrwb/src/pvamrwbdecoder_basic_op_cequivalent.h b/media/libstagefright/codecs/amrwb/src/pvamrwbdecoder_basic_op_cequivalent.h index 3c7590c..7a86ec2 100644 --- a/media/libstagefright/codecs/amrwb/src/pvamrwbdecoder_basic_op_cequivalent.h +++ b/media/libstagefright/codecs/amrwb/src/pvamrwbdecoder_basic_op_cequivalent.h
@@ -467,7 +467,12 @@ __inline int32 fxp_mac_16by16(int16 var1, int16 var2, int32 L_add) { - L_add += (int32)var1 * var2; + int32 l_orig = L_add; + if (__builtin_add_overflow( (int32)var1 * var2, l_orig, &L_add)) { + // needs saturation + if (l_orig > 0) L_add = MAX_32; + else L_add = MIN_32; + } return L_add; }