[FFmpeg-cvslog] mov: Drop dref when unable to parse

Vittorio Giovara git at videolan.org
Thu Nov 19 15:32:20 CET 2015


ffmpeg | branch: master | Vittorio Giovara <vittorio.giovara at gmail.com> | Mon Nov  9 15:14:43 2015 +0100| [b5f963bfec1f452c37eee900c7b11f065d10dd60] | committer: Vittorio Giovara

mov: Drop dref when unable to parse

Some entries might be either empty or contain types we do not parse
(eg. 'url '). In both cases, if an 'alis' is not the first entry,
external references are not loaded, so make sure that the array starts
with an 'alis' dref.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5f963bfec1f452c37eee900c7b11f065d10dd60
---

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

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 2982bf2..c749577 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -482,7 +482,7 @@ static int mov_read_dref(MOVContext *c, AVIOContext *pb, MOVAtom atom)
         return AVERROR(ENOMEM);
     sc->drefs_count = entries;
 
-    for (i = 0; i < sc->drefs_count; i++) {
+    for (i = 0; i < entries; i++) {
         MOVDref *dref = &sc->drefs[i];
         uint32_t size = avio_rb32(pb);
         int64_t next = avio_tell(pb) + size - 4;
@@ -577,6 +577,11 @@ static int mov_read_dref(MOVContext *c, AVIOContext *pb, MOVAtom atom)
                 } else
                     avio_skip(pb, len);
             }
+        } else {
+            av_log(c->fc, AV_LOG_DEBUG, "Unknown dref type 0x08%x size %d\n",
+                   dref->type, size);
+            entries--;
+            i--;
         }
         avio_seek(pb, next, SEEK_SET);
     }



More information about the ffmpeg-cvslog mailing list