Message ID | 20201015203232.18258-1-michael@niedermayer.cc |
---|---|
State | Accepted |
Commit | 51002362c4ed301e54cea1597666cd5cc9a134f3 |
Headers | show |
Series | [FFmpeg-devel,1/5] avcodec/notchlc: Check uncompressed size against input for LZ4 | expand |
Context | Check | Description |
---|---|---|
andriy/x86_make | success | Make finished |
andriy/x86_make_fate | success | Make fate finished |
On Thu, Oct 15, 2020 at 10:32:28PM +0200, Michael Niedermayer wrote: > Fixes: OOM > Fixes: 26168/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_NOTCHLC_fuzzer-6019839015256064 > > Equation is based on LZ4_COMPRESSBOUND from lz4.h > Suggested-by: Paul > Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > --- > libavcodec/notchlc.c | 5 +++++ > 1 file changed, 5 insertions(+) will apply [...]
This broke decoding of every single file. Please revert ASAP! On Tue, Oct 20, 2020 at 3:43 PM Michael Niedermayer <michael@niedermayer.cc> wrote: > On Thu, Oct 15, 2020 at 10:32:28PM +0200, Michael Niedermayer wrote: > > Fixes: OOM > > Fixes: > 26168/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_NOTCHLC_fuzzer-6019839015256064 > > > > Equation is based on LZ4_COMPRESSBOUND from lz4.h > > Suggested-by: Paul > > Found-by: continuous fuzzing process > https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg > > Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> > > --- > > libavcodec/notchlc.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > will apply > > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > Elect your leaders based on what they did after the last election, not > based on what they say before an election. > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
On Tue, Oct 20, 2020 at 04:57:47PM +0200, Paul B Mahol wrote: > This broke decoding of every single file. > > Please revert ASAP! reverted, i have to say though that this was the bound that you posted. I think you mixed upper and lower bounds and I didnt notice The patch i originally posted works with the 2 test samples I now have are you ok with it (the change is below for reference) @@ -490,6 +490,9 @@ static int decode_frame(AVCodecContext *avctx, bytestream2_init(gb, s->lzf_buffer, uncompressed_size); } else if (s->format == 1) { + if (bytestream2_get_bytes_left(gb) < uncompressed_size / 255) + return AVERROR_INVALIDDATA; + av_fast_padded_malloc(&s->uncompressed_buffer, &s->uncompressed_size, uncompressed_size); if (!s->uncompressed_buffer) Thanks [...]
diff --git a/libavcodec/notchlc.c b/libavcodec/notchlc.c index 3f7079da70..d13ce3193c 100644 --- a/libavcodec/notchlc.c +++ b/libavcodec/notchlc.c @@ -490,6 +490,11 @@ static int decode_frame(AVCodecContext *avctx, bytestream2_init(gb, s->lzf_buffer, uncompressed_size); } else if (s->format == 1) { + unsigned remaining = bytestream2_get_bytes_left(gb); + + if (remaining > 0x7E000000U || remaining + remaining/255 + 16 < uncompressed_size) + return AVERROR_INVALIDDATA; + av_fast_padded_malloc(&s->uncompressed_buffer, &s->uncompressed_size, uncompressed_size); if (!s->uncompressed_buffer)
Fixes: OOM Fixes: 26168/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_NOTCHLC_fuzzer-6019839015256064 Equation is based on LZ4_COMPRESSBOUND from lz4.h Suggested-by: Paul Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavcodec/notchlc.c | 5 +++++ 1 file changed, 5 insertions(+)