From 115a57302a7d6661426304bec3a5bc72d0edf4b0 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Wed, 14 Dec 2011 20:34:58 +0200 Subject: applehttp: Properly clean up if unable to probe a segment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This avoids a segfault if the probe function wasn't able to determine the format. The bug was found by Panagiotis H.M. Issaris. Signed-off-by: Martin Storsjö --- libavformat/applehttp.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'libavformat/applehttp.c') diff --git a/libavformat/applehttp.c b/libavformat/applehttp.c index 19f2b203ef..6c4d56d305 100644 --- a/libavformat/applehttp.c +++ b/libavformat/applehttp.c @@ -503,8 +503,15 @@ static int applehttp_read_header(AVFormatContext *s, AVFormatParameters *ap) v->pb.seekable = 0; ret = av_probe_input_buffer(&v->pb, &in_fmt, v->segments[0]->url, NULL, 0, 0); - if (ret < 0) + if (ret < 0) { + /* Free the ctx - it isn't initialized properly at this point, + * so avformat_close_input shouldn't be called. If + * avformat_open_input fails below, it frees and zeros the + * context, so it doesn't need any special treatment like this. */ + avformat_free_context(v->ctx); + v->ctx = NULL; goto fail; + } v->ctx->pb = &v->pb; ret = avformat_open_input(&v->ctx, v->segments[0]->url, in_fmt, NULL); if (ret < 0) -- cgit v1.2.3