avutil/common: Fix integer overflow in av_clip_int8/16_c
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 25 Feb 2015 19:55:02 +0000 (20:55 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 25 Feb 2015 19:56:00 +0000 (20:56 +0100)
Fixes: signal_sigsegv_30420a5_2388_cov_1489993561_integra_lavf.mp4

Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavutil/common.h

index 3675a6c..2fca693 100644 (file)
@@ -147,7 +147,7 @@ static av_always_inline av_const uint8_t av_clip_uint8_c(int a)
  */
 static av_always_inline av_const int8_t av_clip_int8_c(int a)
 {
-    if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F;
+    if ((a+0x80U) & ~0xFF) return (a>>31) ^ 0x7F;
     else                  return a;
 }
 
@@ -169,7 +169,7 @@ static av_always_inline av_const uint16_t av_clip_uint16_c(int a)
  */
 static av_always_inline av_const int16_t av_clip_int16_c(int a)
 {
-    if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF;
+    if ((a+0x8000U) & ~0xFFFF) return (a>>31) ^ 0x7FFF;
     else                      return a;
 }