>From 68e71eba7b3384543c46f43e873421ee0b8722a0 Mon Sep 17 00:00:00 2001 From: Matthew White Date: Tue, 30 Aug 2016 12:09:38 +0200 Subject: [PATCH 24/25] Bugfix: Set NULL variable due to --content-disposition to Metalink origin * src/http.c (http_loop): Prevent SIGSEGV when hstat.local_file is NULL, opt.content_disposition has a role in leaving the value unset * src/http.c (gethttp): If hs->local_file is NULL (aka http_loop()'s hstat.local_file), set it to the value of hs->metalink->origin --- src/http.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/http.c b/src/http.c index 753f960..e7d18dd 100644 --- a/src/http.c +++ b/src/http.c @@ -3380,6 +3380,9 @@ gethttp (const struct url *u, struct url *original_url, struct http_stat *hs, if (metalink) { hs->metalink = metalink_from_http (resp, hs, u); + /* Bugfix: hs->local_file is NULL (opt.content_disposition). */ + if (!hs->local_file && hs->metalink && hs->metalink->origin) + hs->local_file = xstrdup (hs->metalink->origin); xfree (hs->message); retval = RETR_WITH_METALINK; CLOSE_FINISH (sock); @@ -4499,7 +4502,10 @@ exit: if ((ret == RETROK || opt.content_on_error) && local_file) { xfree (*local_file); - *local_file = xstrdup (hstat.local_file); + /* Bugfix: Prevent SIGSEGV when hstat.local_file was left NULL + (i.e. due to opt.content_disposition). */ + if (hstat.local_file) + *local_file = xstrdup (hstat.local_file); } free_hstat (&hstat); -- 2.7.3