Browse Source

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>
tags/n0.11
Tomas Härdin Diego Biurrun 13 years ago
parent
commit
687e2fdebd
1 changed files with 7 additions and 5 deletions
  1. +7
    -5
      libavformat/mxfdec.c

+ 7
- 5
libavformat/mxfdec.c View File

@@ -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);
}


Loading…
Cancel
Save