diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-06-11 10:29:57 -0400 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2012-09-28 08:07:00 +0200 |
commit | d9ffa2aca1e438a44d41f3ef3aeb8ef396bcd7b0 (patch) | |
tree | 6de6ea15d2ecfbc8eb87324e64620e1ba9a624d5 /libavcodec | |
parent | 7124fa5d3640e5b8089dd13b22a09038b2ec5216 (diff) | |
download | ffmpeg-d9ffa2aca1e438a44d41f3ef3aeb8ef396bcd7b0.tar.gz |
golomb: check remaining bits during unary decoding in get_ur_golomb_jpegls()
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
(cherry picked from commit 4795362660a526a38a7a60f06826bce97a092b59)
Signed-off-by: Anton Khirnov <anton@khirnov.net>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/golomb.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libavcodec/golomb.h b/libavcodec/golomb.h index 1712540fd3..b6b8cc8412 100644 --- a/libavcodec/golomb.h +++ b/libavcodec/golomb.h @@ -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); } |