ffmpeg | branch: master | Alexandra Hájková <alexandra.khirn...@gmail.com> | Fri Jul 17 14:17:02 2015 +0200| [93f16f338f9e8aba0c006752eb3afc3fe6e137fd] | committer: Anton Khirnov
asfdec: close the demuxer properly when read_header is failing Signed-off-by: Anton Khirnov <an...@khirnov.net> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=93f16f338f9e8aba0c006752eb3afc3fe6e137fd --- libavformat/asfdec.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index a625028..6a71be9 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 = { _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog