From 701ea516eeafc38b5077eca2ce5e994f306e5165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Tue, 8 Jun 2010 11:18:22 +0000 Subject: [PATCH] Fix handling of errors in the http protocol If http_connect fails, we've already stored the new connection handle in s->hd, so clear it so http_close won't double-free it. 10l to me for not spotting it during review Originally committed as revision 23529 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/http.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavformat/http.c b/libavformat/http.c index 09acee69ae..815ffffded 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -131,6 +131,7 @@ static int http_open_cnx(URLContext *h) fail: if (hd) url_close(hd); + s->hd = NULL; return AVERROR(EIO); } @@ -149,6 +150,7 @@ static int http_open(URLContext *h, const char *uri, int flags) s->chunksize = -1; s->off = 0; s->init = 0; + s->hd = NULL; *s->headers = '\0'; memset(&s->auth_state, 0, sizeof(s->auth_state)); av_strlcpy(s->location, uri, URL_SIZE); @@ -452,7 +454,8 @@ static int http_close(URLContext *h) ret = ret > 0 ? 0 : ret; } - url_close(s->hd); + if (s->hd) + url_close(s->hd); av_free(s); return ret; }