From: Michael Niedermayer <michael@niedermayer.cc> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: [FFmpeg-devel] [PATCH 1/5] avcodec/targa: Check input size for uncompressed TGA before allocation Date: Thu, 23 Dec 2021 22:15:23 +0100 Message-ID: <20211223211527.20408-1-michael@niedermayer.cc> (raw) Fixes: Timeout Fixes: 42667/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TARGA_fuzzer-5619236075077632 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> --- libavcodec/targa.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/libavcodec/targa.c b/libavcodec/targa.c index 221fcc956d0..b0048621d35 100644 --- a/libavcodec/targa.c +++ b/libavcodec/targa.c @@ -117,6 +117,7 @@ static int decode_frame(AVCodecContext *avctx, int idlen, pal, compr, y, w, h, bpp, flags, ret; int first_clr, colors, csize; int interleave; + size_t img_size; bytestream2_init(&s->gb, avpkt->data, avpkt->size); @@ -180,6 +181,15 @@ static int decode_frame(AVCodecContext *avctx, return avpkt->size; } + if (!(compr & TGA_RLE)) { + img_size = w * ((bpp + 1) >> 3); + if (bytestream2_get_bytes_left(&s->gb) < img_size * h) { + av_log(avctx, AV_LOG_ERROR, + "Not enough data available for image\n"); + return AVERROR_INVALIDDATA; + } + } + if ((ret = ff_get_buffer(avctx, p, 0)) < 0) return ret; p->pict_type = AV_PICTURE_TYPE_I; @@ -251,7 +261,6 @@ static int decode_frame(AVCodecContext *avctx, if (res < 0) return res; } else { - size_t img_size = w * ((bpp + 1) >> 3); uint8_t *line; if (bytestream2_get_bytes_left(&s->gb) < img_size * h) { av_log(avctx, AV_LOG_ERROR, -- 2.17.1 _______________________________________________ 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".
next reply other threads:[~2021-12-23 21:16 UTC|newest] Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-23 21:15 Michael Niedermayer [this message] 2021-12-23 21:15 ` [FFmpeg-devel] [PATCH 2/5] avcodec/cdgraphics: avoid signed overflow in alpha Michael Niedermayer 2021-12-23 21:45 ` Andreas Rheinhardt 2021-12-25 10:43 ` Michael Niedermayer 2021-12-23 21:15 ` [FFmpeg-devel] [PATCH 3/5] avformat/flvdec: timestamps cannot use the full int64 range Michael Niedermayer 2021-12-30 20:44 ` Michael Niedermayer 2021-12-23 21:15 ` [FFmpeg-devel] [PATCH 4/5] avcodec/apedec: fix integer overflow in 8bit samples Michael Niedermayer 2021-12-30 20:42 ` Michael Niedermayer 2021-12-23 21:15 ` [FFmpeg-devel] [PATCH 5/5] avformat/mvdec: Check bytes_per_sample Michael Niedermayer 2021-12-23 23:07 ` Peter Ross 2021-12-24 3:32 ` John-Paul Stewart 2021-12-24 16:58 ` Michael Niedermayer 2021-12-24 20:29 ` John-Paul Stewart 2021-12-25 10:43 ` Michael Niedermayer 2021-12-30 21:11 ` [FFmpeg-devel] [PATCH 1/5] avcodec/targa: Check input size for uncompressed TGA before allocation Michael Niedermayer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211223211527.20408-1-michael@niedermayer.cc \ --to=michael@niedermayer.cc \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git