diff options
author | Tomas Härdin <tomas.hardin@codemill.se> | 2012-01-26 16:21:37 +0400 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2012-02-09 15:43:47 +0400 |
commit | 687e2fdebd49cea57d1413db3baa13fa65583591 (patch) | |
tree | ed18b6f0f527b3096946c068794f982efeddea1e /libavformat | |
parent | e352c96c1770f77f83cd73e6d0a286ac5541edf9 (diff) |
mxfdec: Move the current_partition check inside mxf_read_header()
This fixes SIGSEGV on files where this is the case, such as zzuf4.mxf.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mxfdec.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 2efd287d9d..f17952b65c 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -1535,11 +1535,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 { @@ -1689,6 +1684,13 @@ static int mxf_read_header(AVFormatContext *s) 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) { compute_partition_essence_offset(s, mxf, &klv); } |