avcodec/get_bits: Fix get_sbits_long(0)
authorMichael Niedermayer <michael@niedermayer.cc>
Sat, 3 Dec 2016 22:44:56 +0000 (23:44 +0100)
committerMichael Niedermayer <michael@niedermayer.cc>
Sun, 4 Dec 2016 19:25:15 +0000 (20:25 +0100)
Fixes undefined behavior
Fixes: 640889-media

Found-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit c72fa432349881d5a445cd110abf698cc94d490d)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/get_bits.h

index 4cf61d6..30e9da3 100644 (file)
@@ -382,6 +382,10 @@ static inline uint64_t get_bits64(GetBitContext *s, int n)
  */
 static inline int get_sbits_long(GetBitContext *s, int n)
 {
+    // sign_extend(x, 0) is undefined
+    if (!n)
+        return 0;
+
     return sign_extend(get_bits_long(s, n), n);
 }