diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 83674f4cd4a7e293dc5f08f0d51977ead80d179b..23c130ab7e6b7009fddb78f1c0d920d14e4aed79 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -503,6 +503,13 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap) sscanf(str_track, "%d", &s->track); break; default: + if(size > 1000000){ + av_log(s, AV_LOG_ERROR, "well something went wrong during header parsing, " + "ill ignore it and try to continue anyway\n"); + avi->movi_list = url_ftell(pb) - 4; + avi->movi_end = url_fsize(pb); + goto end_of_header; + } /* skip tag */ size += (size & 1); url_fskip(pb, size);