golomb: check remaining bits during unary decoding in get_ur_golomb_jpegls()
authorJustin Ruggles <justin.ruggles@gmail.com>
Mon, 11 Jun 2012 14:29:57 +0000 (10:29 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Tue, 12 Jun 2012 18:33:39 +0000 (14:33 -0400)
Fixes infinite loop in FLAC decoding in case of a truncated bitstream due to
the safe bitstream reader returning 0's at the end.

Fixes Bug 310.

CC:libav-stable@libav.org

libavcodec/golomb.h

index 1712540..b6b8cc8 100644 (file)
@@ -301,7 +301,7 @@ static inline int get_ur_golomb_jpegls(GetBitContext *gb, int k, int limit, int
         return buf;
     }else{
         int i;
-        for (i = 0; i < limit && SHOW_UBITS(re, gb, 1) == 0; i++) {
+        for (i = 0; i < limit && SHOW_UBITS(re, gb, 1) == 0 && HAVE_BITS_REMAINING(re, gb); i++) {
             LAST_SKIP_BITS(re, gb, 1);
             UPDATE_CACHE(re, gb);
         }