diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2022-02-03 22:46:55 +0100 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2022-02-16 18:57:03 +0100 |
commit | 437cd15ae3cd55fa2e106301e39601c5dca3fd5b (patch) | |
tree | 7e88e2c112779f3d825a5886505511e9bc991e7a | |
parent | ea9125a43f1dec0e40841f51d92ef404260330e5 (diff) | |
download | ffmpeg-437cd15ae3cd55fa2e106301e39601c5dca3fd5b.tar.gz |
avformat/matroskadec: Fix infinite loop with bz decompression
The same check is added to zlib too, it seems not needed there though
Fixes: Infinite loop
Fixes: 43932/clusterfuzz-testcase-minimized-ffmpeg_dem_MATROSKA_fuzzer-6175167573786624
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 9c3d2cbb510674226b0c8fa6b146bf891f83786c)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | libavformat/matroskadec.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 4492e76e82..0c401fa48a 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1289,7 +1289,7 @@ static int matroska_decode_buffer(uint8_t **buf, int *buf_size, case MATROSKA_TRACK_ENCODING_COMP_ZLIB: { z_stream zstream = { 0 }; - if (inflateInit(&zstream) != Z_OK) + if (!pkt_size || inflateInit(&zstream) != Z_OK) return -1; zstream.next_in = data; zstream.avail_in = isize; @@ -1322,7 +1322,7 @@ static int matroska_decode_buffer(uint8_t **buf, int *buf_size, case MATROSKA_TRACK_ENCODING_COMP_BZLIB: { bz_stream bzstream = { 0 }; - if (BZ2_bzDecompressInit(&bzstream, 0, 0) != BZ_OK) + if (!pkt_size || BZ2_bzDecompressInit(&bzstream, 0, 0) != BZ_OK) return -1; bzstream.next_in = data; bzstream.avail_in = isize; |