OSDN Git Service

avcodec/nellymoser: Fix multiple left shift of negative value -8591
authorMichael Niedermayer <michael@niedermayer.cc>
Fri, 5 May 2017 17:28:56 +0000 (19:28 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Fri, 5 May 2017 17:29:32 +0000 (19:29 +0200)
Fixes: 1342/clusterfuzz-testcase-minimized-5490842129137664

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/nellymoser.c

index 027726e..5ff6583 100644 (file)
@@ -84,7 +84,7 @@ const int16_t ff_nelly_delta_table[32] = {
 
 static inline int signed_shift(int i, int shift) {
     if (shift > 0)
-        return i << shift;
+        return (unsigned)i << shift;
     return i >> -shift;
 }
 
@@ -108,7 +108,7 @@ static int headroom(int *la)
         return 31;
     }
     l = 30 - av_log2(FFABS(*la));
-    *la <<= l;
+    *la *= 1<<l;
     return l;
 }