* [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