diff options
author | Marco Nelissen <marcone@google.com> | 2016-01-27 14:41:58 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-03-22 17:14:35 -0700 |
commit | 4b17bd19e9eceade55dd27aea10b2cefa4e929c7 (patch) | |
tree | 41e4982162c2c3557a41228eeae42354a060df9f /media/libstagefright/codecs/amrwbenc/inc/basic_op.h | |
parent | d7a4d6dcb9a82eb5daad7ab897a1be5357ce19c3 (diff) | |
download | frameworks_av-4b17bd19e9eceade55dd27aea10b2cefa4e929c7.zip frameworks_av-4b17bd19e9eceade55dd27aea10b2cefa4e929c7.tar.gz frameworks_av-4b17bd19e9eceade55dd27aea10b2cefa4e929c7.tar.bz2 |
Overflow fixes for amrwbenc
Most of these were encountered while running a mixed sanitized/unsanitized
AMR encoder, so may not be reachable in real conditions.
Change-Id: I85af7d40214133234009323e7e64432fc1be39ca
Diffstat (limited to 'media/libstagefright/codecs/amrwbenc/inc/basic_op.h')
-rw-r--r-- | media/libstagefright/codecs/amrwbenc/inc/basic_op.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/media/libstagefright/codecs/amrwbenc/inc/basic_op.h b/media/libstagefright/codecs/amrwbenc/inc/basic_op.h index e63a55a..d36f455 100644 --- a/media/libstagefright/codecs/amrwbenc/inc/basic_op.h +++ b/media/libstagefright/codecs/amrwbenc/inc/basic_op.h @@ -222,14 +222,18 @@ static_vo Word16 shl (Word16 var1, Word16 var2) } else { - result = (Word32) var1 *((Word32) 1 << var2); - if ((var2 > 15 && var1 != 0) || (result != (Word32) ((Word16) result))) + if (var2 > 15 && var1 != 0) { var_out = (Word16)((var1 > 0) ? MAX_16 : MIN_16); } else { - var_out = extract_l (result); + result = (Word32) var1 *((Word32) 1 << var2); + if ((result != (Word32) ((Word16) result))) { + var_out = (Word16)((var1 > 0) ? MAX_16 : MIN_16); + } else { + var_out = extract_l (result); + } } } return (var_out); |