From c8eca438a953b4a8ee3b863abac38491357b46a1 Mon Sep 17 00:00:00 2001 From: John Adlum Date: Wed, 1 Jul 2015 23:21:53 +0200 Subject: [PATCH] avformat/asfdec_f: factor error checking out of main header parsing loop Signed-off-by: Michael Niedermayer --- libavformat/asfdec_f.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/libavformat/asfdec_f.c b/libavformat/asfdec_f.c index 6dbd2b9aff..807df4ebe6 100644 --- a/libavformat/asfdec_f.c +++ b/libavformat/asfdec_f.c @@ -779,6 +779,7 @@ static int asf_read_header(AVFormatContext *s) for (;;) { uint64_t gpos = avio_tell(pb); + int ret = 0; ff_get_guid(pb, &g); gsize = avio_rl64(pb); print_guid(&g); @@ -795,13 +796,9 @@ static int asf_read_header(AVFormatContext *s) if (gsize < 24) return AVERROR_INVALIDDATA; if (!ff_guidcmp(&g, &ff_asf_file_header)) { - int ret = asf_read_file_properties(s, gsize); - if (ret < 0) - return ret; + ret = asf_read_file_properties(s, gsize); } else if (!ff_guidcmp(&g, &ff_asf_stream_header)) { - int ret = asf_read_stream_properties(s, gsize); - if (ret < 0) - return ret; + ret = asf_read_stream_properties(s, gsize); } else if (!ff_guidcmp(&g, &ff_asf_comment_header)) { asf_read_content_desc(s, gsize); } else if (!ff_guidcmp(&g, &ff_asf_language_guid)) { @@ -830,7 +827,6 @@ static int asf_read_header(AVFormatContext *s) if (!s->keylen) { if (!ff_guidcmp(&g, &ff_asf_content_encryption)) { unsigned int len; - int ret; AVPacket pkt; av_log(s, AV_LOG_WARNING, "DRM protected stream detected, decoding will likely fail!\n"); @@ -856,6 +852,9 @@ static int asf_read_header(AVFormatContext *s) } } } + if (ret < 0) + return ret; + if (avio_tell(pb) != gpos + gsize) av_log(s, AV_LOG_DEBUG, "gpos mismatch our pos=%"PRIu64", end=%"PRId64"\n",