Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 1/5] avcodec/cfhd: Check idwt_buf size before allocation
@ 2025-07-16  0:52 Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 2/5] avcodec/ivi: Check luma/chroma mb_size Michael Niedermayer
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Michael Niedermayer @ 2025-07-16  0:52 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Fixes: OOM
Fixes: 428760799/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CFHD_DEC_fuzzer-5685176435015680

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/cfhd.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavcodec/cfhd.c b/libavcodec/cfhd.c
index 2044254c842..f110b91f0b2 100644
--- a/libavcodec/cfhd.c
+++ b/libavcodec/cfhd.c
@@ -25,6 +25,7 @@
 
 #include "libavutil/attributes.h"
 #include "libavutil/common.h"
+#include "libavutil/imgutils.h"
 #include "libavutil/intreadwrite.h"
 #include "libavutil/mem.h"
 #include "libavutil/pixdesc.h"
@@ -266,6 +267,9 @@ static int alloc_buffers(AVCodecContext *avctx)
         int height = (i || bayer) ? s->coded_height >> chroma_y_shift : s->coded_height;
         ptrdiff_t stride = (FFALIGN(width  / 8, 8) + 64) * 8;
 
+        if ((ret = av_image_check_size2(stride, height, avctx->max_pixels, s->coded_format, 0, avctx)) < 0)
+            return ret;
+
         if (chroma_y_shift && !bayer)
             height = FFALIGN(height / 8, 2) * 8;
         s->plane[i].width  = width;
-- 
2.49.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [FFmpeg-devel] [PATCH 2/5] avcodec/ivi: Check luma/chroma mb_size
  2025-07-16  0:52 [FFmpeg-devel] [PATCH 1/5] avcodec/cfhd: Check idwt_buf size before allocation Michael Niedermayer
@ 2025-07-16  0:52 ` Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 3/5] avcodec/ffv1dec: Check k in get_vlc_symbol() Michael Niedermayer
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Michael Niedermayer @ 2025-07-16  0:52 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Fixes: shift exponent -1 is negative
Fixes: 429011224/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_INDEO5_fuzzer-5031059358285824

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ivi.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavcodec/ivi.c b/libavcodec/ivi.c
index e7d8d10c3e0..a38f382d5f2 100644
--- a/libavcodec/ivi.c
+++ b/libavcodec/ivi.c
@@ -994,9 +994,11 @@ static int decode_band(IVI45DecContext *ctx,
     for (t = 0; t < band->num_tiles; t++) {
         tile = &band->tiles[t];
 
-        if (tile->mb_size != band->mb_size) {
-            av_log(avctx, AV_LOG_ERROR, "MB sizes mismatch: %d vs. %d\n",
-                   band->mb_size, tile->mb_size);
+        if (tile->mb_size != band->mb_size ||
+            ctx->planes[0].bands[0].mb_size < band->mb_size
+        ) {
+            av_log(avctx, AV_LOG_ERROR, "MB sizes mismatch: %d vs. %d vs. %d\n",
+                   band->mb_size, tile->mb_size, ctx->planes[0].bands[0].mb_size);
             return AVERROR_INVALIDDATA;
         }
         tile->is_empty = get_bits1(&ctx->gb);
-- 
2.49.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [FFmpeg-devel] [PATCH 3/5] avcodec/ffv1dec: Check k in get_vlc_symbol()
  2025-07-16  0:52 [FFmpeg-devel] [PATCH 1/5] avcodec/cfhd: Check idwt_buf size before allocation Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 2/5] avcodec/ivi: Check luma/chroma mb_size Michael Niedermayer
@ 2025-07-16  0:52 ` Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 4/5] avcodec/jpeg2000dec: Check that we arent reading with a non existing tile part Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 5/5] avcodec/smacker: cleanup on bet buffer failure Michael Niedermayer
  3 siblings, 0 replies; 5+ messages in thread
From: Michael Niedermayer @ 2025-07-16  0:52 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

The true problem happens in several previous get_vlc_symbol()
but checking that is more expensive (involving FFABS())
here its just a simple check between 2 variables we have.

Fixes: Assertion log >= k failed at libavcodec/golomb.h:406
Fixes: 429296194/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FFV1_DEC_fuzzer-4691594622337024

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/ffv1dec.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index d613aa53959..d709e8ccbb3 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -56,6 +56,11 @@ static inline int get_vlc_symbol(GetBitContext *gb, VlcState *const state,
         k++;
         i += i;
     }
+    if (k > bits) {
+        ff_dlog(NULL, "k-overflow bias:%d error:%d drift:%d count:%d k:%d",
+                state->bias, state->error_sum, state->drift, state->count, k);
+        k = bits;
+    }
 
     v = get_sr_golomb(gb, k, 12, bits);
     ff_dlog(NULL, "v:%d bias:%d error:%d drift:%d count:%d k:%d",
-- 
2.49.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [FFmpeg-devel] [PATCH 4/5] avcodec/jpeg2000dec: Check that we arent reading with a non existing tile part
  2025-07-16  0:52 [FFmpeg-devel] [PATCH 1/5] avcodec/cfhd: Check idwt_buf size before allocation Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 2/5] avcodec/ivi: Check luma/chroma mb_size Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 3/5] avcodec/ffv1dec: Check k in get_vlc_symbol() Michael Niedermayer
@ 2025-07-16  0:52 ` Michael Niedermayer
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 5/5] avcodec/smacker: cleanup on bet buffer failure Michael Niedermayer
  3 siblings, 0 replies; 5+ messages in thread
From: Michael Niedermayer @ 2025-07-16  0:52 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Fixes: applying zero offset to null pointer
Fixes: 429330004/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_JPEG2000_DEC_fuzzer-4733213845291008

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/jpeg2000dec.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
index b82d85d5ee5..0e867025a38 100644
--- a/libavcodec/jpeg2000dec.c
+++ b/libavcodec/jpeg2000dec.c
@@ -1156,6 +1156,10 @@ static int jpeg2000_decode_packet(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile,
     else
         select_stream(s, tile, tp_index, codsty);
 
+    // refering to a non existing tile part
+    if (!s->g.buffer)
+        return AVERROR_INVALIDDATA;
+
     if (!(ret = get_bits(s, 1))) {
         jpeg2000_flush(s);
         goto skip_data;
@@ -1868,7 +1872,8 @@ static int jpeg2000_decode_packets(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile
         );
     }
     /* EOC marker reached */
-    bytestream2_skip(&s->g, 2);
+    if (ret >= 0)
+        bytestream2_skip(&s->g, 2);
 
     return ret;
 }
-- 
2.49.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [FFmpeg-devel] [PATCH 5/5] avcodec/smacker: cleanup on bet buffer failure
  2025-07-16  0:52 [FFmpeg-devel] [PATCH 1/5] avcodec/cfhd: Check idwt_buf size before allocation Michael Niedermayer
                   ` (2 preceding siblings ...)
  2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 4/5] avcodec/jpeg2000dec: Check that we arent reading with a non existing tile part Michael Niedermayer
@ 2025-07-16  0:52 ` Michael Niedermayer
  3 siblings, 0 replies; 5+ messages in thread
From: Michael Niedermayer @ 2025-07-16  0:52 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

Fixes: memleak (of vlc)
Fixes: 430343927/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SMACKAUD_fuzzer-5265858979233792

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libavcodec/smacker.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c
index 99009bfd361..e0c4dac350c 100644
--- a/libavcodec/smacker.c
+++ b/libavcodec/smacker.c
@@ -668,7 +668,7 @@ static int smka_decode_frame(AVCodecContext *avctx, AVFrame *frame,
     }
 
     if ((ret = ff_get_buffer(avctx, frame, 0)) < 0)
-        return ret;
+        goto error;
     samples  = (int16_t *)frame->data[0];
     samples8 =            frame->data[0];
 
-- 
2.49.0

_______________________________________________
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".

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2025-07-16  0:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-16  0:52 [FFmpeg-devel] [PATCH 1/5] avcodec/cfhd: Check idwt_buf size before allocation Michael Niedermayer
2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 2/5] avcodec/ivi: Check luma/chroma mb_size Michael Niedermayer
2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 3/5] avcodec/ffv1dec: Check k in get_vlc_symbol() Michael Niedermayer
2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 4/5] avcodec/jpeg2000dec: Check that we arent reading with a non existing tile part Michael Niedermayer
2025-07-16  0:52 ` [FFmpeg-devel] [PATCH 5/5] avcodec/smacker: cleanup on bet buffer failure Michael Niedermayer

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