Commit c8eca438 authored by John Adlum's avatar John Adlum Committed by Michael Niedermayer

avformat/asfdec_f: factor error checking out of main header parsing loop

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent a1c03b9d
...@@ -779,6 +779,7 @@ static int asf_read_header(AVFormatContext *s) ...@@ -779,6 +779,7 @@ static int asf_read_header(AVFormatContext *s)
for (;;) { for (;;) {
uint64_t gpos = avio_tell(pb); uint64_t gpos = avio_tell(pb);
int ret = 0;
ff_get_guid(pb, &g); ff_get_guid(pb, &g);
gsize = avio_rl64(pb); gsize = avio_rl64(pb);
print_guid(&g); print_guid(&g);
...@@ -795,13 +796,9 @@ static int asf_read_header(AVFormatContext *s) ...@@ -795,13 +796,9 @@ static int asf_read_header(AVFormatContext *s)
if (gsize < 24) if (gsize < 24)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
if (!ff_guidcmp(&g, &ff_asf_file_header)) { if (!ff_guidcmp(&g, &ff_asf_file_header)) {
int ret = asf_read_file_properties(s, gsize); ret = asf_read_file_properties(s, gsize);
if (ret < 0)
return ret;
} else if (!ff_guidcmp(&g, &ff_asf_stream_header)) { } else if (!ff_guidcmp(&g, &ff_asf_stream_header)) {
int ret = asf_read_stream_properties(s, gsize); ret = asf_read_stream_properties(s, gsize);
if (ret < 0)
return ret;
} else if (!ff_guidcmp(&g, &ff_asf_comment_header)) { } else if (!ff_guidcmp(&g, &ff_asf_comment_header)) {
asf_read_content_desc(s, gsize); asf_read_content_desc(s, gsize);
} else if (!ff_guidcmp(&g, &ff_asf_language_guid)) { } else if (!ff_guidcmp(&g, &ff_asf_language_guid)) {
...@@ -830,7 +827,6 @@ static int asf_read_header(AVFormatContext *s) ...@@ -830,7 +827,6 @@ static int asf_read_header(AVFormatContext *s)
if (!s->keylen) { if (!s->keylen) {
if (!ff_guidcmp(&g, &ff_asf_content_encryption)) { if (!ff_guidcmp(&g, &ff_asf_content_encryption)) {
unsigned int len; unsigned int len;
int ret;
AVPacket pkt; AVPacket pkt;
av_log(s, AV_LOG_WARNING, av_log(s, AV_LOG_WARNING,
"DRM protected stream detected, decoding will likely fail!\n"); "DRM protected stream detected, decoding will likely fail!\n");
...@@ -856,6 +852,9 @@ static int asf_read_header(AVFormatContext *s) ...@@ -856,6 +852,9 @@ static int asf_read_header(AVFormatContext *s)
} }
} }
} }
if (ret < 0)
return ret;
if (avio_tell(pb) != gpos + gsize) if (avio_tell(pb) != gpos + gsize)
av_log(s, AV_LOG_DEBUG, av_log(s, AV_LOG_DEBUG,
"gpos mismatch our pos=%"PRIu64", end=%"PRId64"\n", "gpos mismatch our pos=%"PRIu64", end=%"PRId64"\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment