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/4] avformat/mov: check that iloc offset values fit on an int64_t
@ 2024-07-01  2:40 James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 2/4] avformat/mov: check extent_offset calculation for overflow James Almer
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: James Almer @ 2024-07-01  2:40 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/mov.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index a2e187ff2f..fd78d5f59c 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -8388,7 +8388,7 @@ static int mov_read_SAND(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     return 0;
 }
 
-static int rb_size(AVIOContext *pb, uint64_t* value, int size)
+static int rb_size(AVIOContext *pb, int64_t *value, int size)
 {
     if (size == 0)
         *value = 0;
@@ -8398,9 +8398,11 @@ static int rb_size(AVIOContext *pb, uint64_t* value, int size)
         *value = avio_rb16(pb);
     else if (size == 4)
         *value = avio_rb32(pb);
-    else if (size == 8)
+    else if (size == 8) {
         *value = avio_rb64(pb);
-    else
+        if (*value < 0)
+            return -1;
+    } else
         return -1;
     return size;
 }
-- 
2.45.2

_______________________________________________
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] 4+ messages in thread

* [FFmpeg-devel] [PATCH 2/4] avformat/mov: check extent_offset calculation for overflow
  2024-07-01  2:40 [FFmpeg-devel] [PATCH 1/4] avformat/mov: check that iloc offset values fit on an int64_t James Almer
@ 2024-07-01  2:40 ` James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 3/4] avformat/mov: check for EOF inside the infe list parsing loop James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 4/4] avformat/mov: add more checks for infe atom size James Almer
  2 siblings, 0 replies; 4+ messages in thread
From: James Almer @ 2024-07-01  2:40 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/mov.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index fd78d5f59c..3aa2398386 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -8482,7 +8482,8 @@ static int mov_read_iloc(MOVContext *c, AVIOContext *pb, MOVAtom atom)
         }
         for (int j = 0; j < extent_count; j++) {
             if (rb_size(pb, &extent_offset, offset_size) < 0 ||
-                rb_size(pb, &extent_length, length_size) < 0)
+                rb_size(pb, &extent_length, length_size) < 0 ||
+                base_offset > INT64_MAX - extent_offset)
                 return AVERROR_INVALIDDATA;
             if (offset_type == 1)
                 c->heif_item[i].is_idat_relative = 1;
-- 
2.45.2

_______________________________________________
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] 4+ messages in thread

* [FFmpeg-devel] [PATCH 3/4] avformat/mov: check for EOF inside the infe list parsing loop
  2024-07-01  2:40 [FFmpeg-devel] [PATCH 1/4] avformat/mov: check that iloc offset values fit on an int64_t James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 2/4] avformat/mov: check extent_offset calculation for overflow James Almer
@ 2024-07-01  2:40 ` James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 4/4] avformat/mov: add more checks for infe atom size James Almer
  2 siblings, 0 replies; 4+ messages in thread
From: James Almer @ 2024-07-01  2:40 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/mov.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 3aa2398386..9f6752b492 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -8580,6 +8580,8 @@ static int mov_read_iinf(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     for (i = 0; i < entry_count; i++) {
         MOVAtom infe;
 
+        if (avio_feof(pb))
+            return AVERROR_INVALIDDATA;
         infe.size = avio_rb32(pb) - 8;
         infe.type = avio_rl32(pb);
         ret = mov_read_infe(c, pb, infe, i);
-- 
2.45.2

_______________________________________________
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] 4+ messages in thread

* [FFmpeg-devel] [PATCH 4/4] avformat/mov: add more checks for infe atom size
  2024-07-01  2:40 [FFmpeg-devel] [PATCH 1/4] avformat/mov: check that iloc offset values fit on an int64_t James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 2/4] avformat/mov: check extent_offset calculation for overflow James Almer
  2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 3/4] avformat/mov: check for EOF inside the infe list parsing loop James Almer
@ 2024-07-01  2:40 ` James Almer
  2 siblings, 0 replies; 4+ messages in thread
From: James Almer @ 2024-07-01  2:40 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/mov.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 9f6752b492..ba33e52086 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -8510,6 +8510,8 @@ static int mov_read_infe(MOVContext *c, AVIOContext *pb, MOVAtom atom, int idx)
     version = avio_r8(pb);
     avio_rb24(pb);  // flags.
     size -= 4;
+    if (size < 0)
+        return AVERROR_INVALIDDATA;
 
     if (version < 2) {
         avpriv_report_missing_feature(c->fc, "infe version < 2");
@@ -8521,6 +8523,8 @@ static int mov_read_infe(MOVContext *c, AVIOContext *pb, MOVAtom atom, int idx)
     avio_rb16(pb); // item_protection_index
     item_type = avio_rl32(pb);
     size -= 8;
+    if (size < 1)
+        return AVERROR_INVALIDDATA;
 
     av_bprint_init(&item_name, 0, AV_BPRINT_SIZE_UNLIMITED);
     ret = ff_read_string_to_bprint_overwrite(pb, &item_name, size);
-- 
2.45.2

_______________________________________________
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] 4+ messages in thread

end of thread, other threads:[~2024-07-01  2:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-01  2:40 [FFmpeg-devel] [PATCH 1/4] avformat/mov: check that iloc offset values fit on an int64_t James Almer
2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 2/4] avformat/mov: check extent_offset calculation for overflow James Almer
2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 3/4] avformat/mov: check for EOF inside the infe list parsing loop James Almer
2024-07-01  2:40 ` [FFmpeg-devel] [PATCH 4/4] avformat/mov: add more checks for infe atom size James Almer

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