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 2/3] avformat/mov: reindent after previous commit
       [not found] <20220426082026.85353-1-quinkblack@foxmail.com>
@ 2022-04-26  8:20 ` Zhao Zhili
  2022-04-26  8:20 ` [FFmpeg-devel] [PATCH 3/3] avformat/mov: fix use invalid box size/type due to eof Zhao Zhili
  1 sibling, 0 replies; 3+ messages in thread
From: Zhao Zhili @ 2022-04-26  8:20 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Zhao Zhili

---
 libavformat/mov.c | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 6116078b1a..e948c6cd0f 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7693,12 +7693,12 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
         atom.size = INT64_MAX;
     while (total_size <= atom.size - 8 && !avio_feof(pb)) {
         int (*parse)(MOVContext*, AVIOContext*, MOVAtom) = NULL;
-            a.size = avio_rb32(pb);
-            a.type = avio_rl32(pb);
-            if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) ||
-                  a.type == MKTAG('h','o','o','v')) &&
-                a.size >= 8 &&
-                c->fc->strict_std_compliance < FF_COMPLIANCE_STRICT) {
+        a.size = avio_rb32(pb);
+        a.type = avio_rl32(pb);
+        if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) ||
+              a.type == MKTAG('h','o','o','v')) &&
+            a.size >= 8 &&
+            c->fc->strict_std_compliance < FF_COMPLIANCE_STRICT) {
                 uint32_t type;
                 avio_skip(pb, 4);
                 type = avio_rl32(pb);
@@ -7710,22 +7710,22 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
                     av_log(c->fc, AV_LOG_ERROR, "Detected moov in a free or hoov atom.\n");
                     a.type = MKTAG('m','o','o','v');
                 }
+        }
+        if (atom.type != MKTAG('r','o','o','t') &&
+            atom.type != MKTAG('m','o','o','v')) {
+            if (a.type == MKTAG('t','r','a','k') ||
+                a.type == MKTAG('m','d','a','t')) {
+                av_log(c->fc, AV_LOG_ERROR, "Broken file, trak/mdat not at top-level\n");
+                avio_skip(pb, -8);
+                c->atom_depth --;
+                return 0;
             }
-            if (atom.type != MKTAG('r','o','o','t') &&
-                atom.type != MKTAG('m','o','o','v')) {
-                if (a.type == MKTAG('t','r','a','k') ||
-                    a.type == MKTAG('m','d','a','t')) {
-                    av_log(c->fc, AV_LOG_ERROR, "Broken file, trak/mdat not at top-level\n");
-                    avio_skip(pb, -8);
-                    c->atom_depth --;
-                    return 0;
-                }
-            }
+        }
+        total_size += 8;
+        if (a.size == 1 && total_size + 8 <= atom.size) { /* 64 bit extended size */
+            a.size = avio_rb64(pb) - 8;
             total_size += 8;
-            if (a.size == 1 && total_size + 8 <= atom.size) { /* 64 bit extended size */
-                a.size = avio_rb64(pb) - 8;
-                total_size += 8;
-            }
+        }
         av_log(c->fc, AV_LOG_TRACE, "type:'%s' parent:'%s' sz: %"PRId64" %"PRId64" %"PRId64"\n",
                av_fourcc2str(a.type), av_fourcc2str(atom.type), a.size, total_size, atom.size);
         if (a.size == 0) {
-- 
2.35.3

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

* [FFmpeg-devel] [PATCH 3/3] avformat/mov: fix use invalid box size/type due to eof
       [not found] <20220426082026.85353-1-quinkblack@foxmail.com>
  2022-04-26  8:20 ` [FFmpeg-devel] [PATCH 2/3] avformat/mov: reindent after previous commit Zhao Zhili
@ 2022-04-26  8:20 ` Zhao Zhili
  2022-05-08 16:23   ` "zhilizhao(赵志立)"
  1 sibling, 1 reply; 3+ messages in thread
From: Zhao Zhili @ 2022-04-26  8:20 UTC (permalink / raw)
  To: ffmpeg-devel; +Cc: Zhao Zhili

---
 libavformat/mov.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index e948c6cd0f..429f9fcbf7 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7691,10 +7691,12 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
 
     if (atom.size < 0)
         atom.size = INT64_MAX;
-    while (total_size <= atom.size - 8 && !avio_feof(pb)) {
+    while (total_size <= atom.size - 8) {
         int (*parse)(MOVContext*, AVIOContext*, MOVAtom) = NULL;
         a.size = avio_rb32(pb);
         a.type = avio_rl32(pb);
+        if (avio_feof(pb))
+            break;
         if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) ||
               a.type == MKTAG('h','o','o','v')) &&
             a.size >= 8 &&
-- 
2.35.3

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

* Re: [FFmpeg-devel] [PATCH 3/3] avformat/mov: fix use invalid box size/type due to eof
  2022-04-26  8:20 ` [FFmpeg-devel] [PATCH 3/3] avformat/mov: fix use invalid box size/type due to eof Zhao Zhili
@ 2022-05-08 16:23   ` "zhilizhao(赵志立)"
  0 siblings, 0 replies; 3+ messages in thread
From: "zhilizhao(赵志立)" @ 2022-05-08 16:23 UTC (permalink / raw)
  To: FFmpeg development discussions and patches



> On Apr 26, 2022, at 4:20 PM, Zhao Zhili <quinkblack@foxmail.com> wrote:
> 
> ---
> libavformat/mov.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index e948c6cd0f..429f9fcbf7 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -7691,10 +7691,12 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> 
>     if (atom.size < 0)
>         atom.size = INT64_MAX;
> -    while (total_size <= atom.size - 8 && !avio_feof(pb)) {
> +    while (total_size <= atom.size - 8) {
>         int (*parse)(MOVContext*, AVIOContext*, MOVAtom) = NULL;
>         a.size = avio_rb32(pb);
>         a.type = avio_rl32(pb);
> +        if (avio_feof(pb))
> +            break;
>         if (((a.type == MKTAG('f','r','e','e') && c->moov_retry) ||
>               a.type == MKTAG('h','o','o','v')) &&
>             a.size >= 8 &&
> -- 

Applied.

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

end of thread, other threads:[~2022-05-08 16:24 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20220426082026.85353-1-quinkblack@foxmail.com>
2022-04-26  8:20 ` [FFmpeg-devel] [PATCH 2/3] avformat/mov: reindent after previous commit Zhao Zhili
2022-04-26  8:20 ` [FFmpeg-devel] [PATCH 3/3] avformat/mov: fix use invalid box size/type due to eof Zhao Zhili
2022-05-08 16:23   ` "zhilizhao(赵志立)"

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