mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/faxcompr: Check for end of bitstream in decode_group3_1d_line() and decode_group3_2d_line()
Fixes: infinite loop
Fixes: 33674/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TIFF_fuzzer-4816457818046464
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 08d2df4153
)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
92ecb9c9e6
commit
4a688d139b
|
@ -206,6 +206,8 @@ static int decode_group3_1d_line(AVCodecContext *avctx, GetBitContext *gb,
|
|||
unsigned int run = 0;
|
||||
unsigned int t;
|
||||
for (;;) {
|
||||
if (get_bits_left(gb) <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
t = get_vlc2(gb, ccitt_vlc[mode].table, 9, 2);
|
||||
run += t;
|
||||
if (t < 64) {
|
||||
|
@ -251,7 +253,10 @@ static int decode_group3_2d_line(AVCodecContext *avctx, GetBitContext *gb,
|
|||
unsigned int offs = 0, run = 0;
|
||||
|
||||
while (offs < width) {
|
||||
int cmode = get_vlc2(gb, ccitt_group3_2d_vlc.table, 9, 1);
|
||||
int cmode;
|
||||
if (get_bits_left(gb) <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
cmode = get_vlc2(gb, ccitt_group3_2d_vlc.table, 9, 1);
|
||||
if (cmode == -1) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Incorrect mode VLC\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
|
Loading…
Reference in New Issue