From: Steven Liu Date: Tue, 28 Mar 2017 08:51:28 +0000 (+0800) Subject: avformat/flvdec: check FLVHeader PreviousTagSize0 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=c0628919b8c5761d64b1169e8de7584544d15ebf;p=ffmpeg avformat/flvdec: check FLVHeader PreviousTagSize0 refer to SPEC: Annex E. The FLV File Format said: E.3 TheFLVFileBody have a table: Field Type Comment PreviousTagSize0 UI32 Always 0 Reviewed-by: Bela Bodecs Reviewed-by: Hendrik Leppkes Signed-off-by: Steven Liu --- diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index cdcfb9c5a08..94c9e283343 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -709,6 +709,7 @@ static int flv_read_header(AVFormatContext *s) int flags; FLVContext *flv = s->priv_data; int offset; + int pre_tag_size = 0; avio_skip(s->pb, 4); flags = avio_r8(s->pb); @@ -719,7 +720,16 @@ static int flv_read_header(AVFormatContext *s) offset = avio_rb32(s->pb); avio_seek(s->pb, offset, SEEK_SET); - avio_skip(s->pb, 4); + + /* Annex E. The FLV File Format + * E.3 TheFLVFileBody + * Field Type Comment + * PreviousTagSize0 UI32 Always 0 + * */ + pre_tag_size = avio_rb32(s->pb); + if (pre_tag_size) { + av_log(s, AV_LOG_WARNING, "Read FLV header error, input file is not a standard flv format, first PreviousTagSize0 always is 0\n"); + } s->start_time = 0; flv->sum_flv_tag_size = 0;