From 93f16f338f9e8aba0c006752eb3afc3fe6e137fd Mon Sep 17 00:00:00 2001 From: Alexandra Hájková Date: Fri, 17 Jul 2015 14:17:02 +0200 Subject: asfdec: close the demuxer properly when read_header is failing Signed-off-by: Anton Khirnov --- libavformat/asfdec.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'libavformat/asfdec.c') diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index a6250283d3..6a71be9ab2 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -1659,14 +1659,14 @@ static int asf_read_header(AVFormatContext *s) if (ret == AVERROR_EOF && asf->data_reached) break; else - return ret; + goto failed; } g = find_guid(guid); if (g) { asf->unknown_offset = asf->offset; asf->is_header = 1; if ((ret = g->read_object(s, g)) < 0) - return ret; + goto failed; } else { size = avio_rl64(pb); align_position(pb, asf->offset, size); @@ -1677,7 +1677,8 @@ static int asf_read_header(AVFormatContext *s) if (!asf->data_reached) { av_log(s, AV_LOG_ERROR, "Data Object was not found.\n"); - return AVERROR_INVALIDDATA; + ret = AVERROR_INVALIDDATA; + goto failed; } if (pb->seekable) avio_seek(pb, asf->first_packet_offset, SEEK_SET); @@ -1702,6 +1703,10 @@ static int asf_read_header(AVFormatContext *s) } return 0; + +failed: + asf_read_close(s); + return ret; } AVInputFormat ff_asf_demuxer = { -- cgit v1.2.3