diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 5c9d808d80..ef4b36824e 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -2294,8 +2294,6 @@ static int mxf_read_header(AVFormatContext *s) MXFContext *mxf = s->priv_data; KLVPacket klv; int64_t essence_offset = 0; - int64_t last_pos = -1; - uint64_t last_pos_index = 1; int ret; mxf->last_forward_tell = INT64_MAX; @@ -2313,12 +2311,7 @@ static int mxf_read_header(AVFormatContext *s) while (!avio_feof(s->pb)) { const MXFMetadataReadTableEntry *metadata; - if (avio_tell(s->pb) == last_pos) { - av_log(mxf->fc, AV_LOG_ERROR, "MXF structure loop detected\n"); - return AVERROR_INVALIDDATA; - } - if ((1ULL<<61) % last_pos_index++ == 0) - last_pos = avio_tell(s->pb); + if (klv_read_packet(&klv, s->pb) < 0) { /* EOF - seek to previous partition or stop */ if(mxf_parse_handle_partition_or_eof(mxf) <= 0)