[FFmpeg-cvslog] mxfdec: Move the current_partition check inside mxf_read_header()

Tomas Härdin git at videolan.org
Thu Dec 22 14:32:44 CET 2011


ffmpeg | branch: master | Tomas Härdin <tomas.hardin at codemill.se> | Tue Dec 20 18:11:10 2011 +0100| [184f479096dabcb1eafd9c661304f410a76780ed] | committer: Tomas Härdin

mxfdec: Move the current_partition check inside mxf_read_header()

This fixes SIGSEGV on files where this is actually the case, such as zzuf4.mxf

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

 libavformat/mxfdec.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
index 4a49907..5035a2f 100644
--- a/libavformat/mxfdec.c
+++ b/libavformat/mxfdec.c
@@ -1500,11 +1500,6 @@ static int mxf_parse_handle_essence(MXFContext *mxf)
     AVIOContext *pb = mxf->fc->pb;
     int64_t ret;
 
-    if (!mxf->current_partition) {
-        av_log(mxf->fc, AV_LOG_ERROR, "found essence prior to PartitionPack\n");
-        return AVERROR_INVALIDDATA;
-    }
-
     if (mxf->parsing_backward) {
         return mxf_seek_to_previous_partition(mxf);
     } else {
@@ -1620,6 +1615,12 @@ static int mxf_read_header(AVFormatContext *s, AVFormatParameters *ap)
             IS_KLV_KEY(klv.key, mxf_essence_element_key) ||
             IS_KLV_KEY(klv.key, mxf_avid_essence_element_key) ||
             IS_KLV_KEY(klv.key, mxf_system_item_key)) {
+
+            if (!mxf->current_partition) {
+                av_log(mxf->fc, AV_LOG_ERROR, "found essence prior to first PartitionPack\n");
+                return AVERROR_INVALIDDATA;
+            }
+
             if (!mxf->current_partition->essence_offset) {
                 /* for OP1a we compute essence_offset
                  * for OPAtom we point essence_offset after the KL (usually op1a_essence_offset + 20 or 25)



More information about the ffmpeg-cvslog mailing list