From: Fabian Keil Date: Tue, 12 Nov 2019 11:44:41 +0000 (+0100) Subject: Fix an invalid free introduced in d01bb4028a9 X-Git-Tag: v_3_0_29~569 X-Git-Url: http://www.privoxy.org/gitweb/junkmail.html?a=commitdiff_plain;h=34e92f5e777f9df0976372455ef772a8788a8152;p=privoxy.git Fix an invalid free introduced in d01bb4028a9 --- diff --git a/loaders.c b/loaders.c index 65aba0ac..1edf4277 100644 --- a/loaders.c +++ b/loaders.c @@ -998,6 +998,8 @@ void unload_forward_spec(struct forward_spec *fwd) free_pattern_spec(fwd->url); freez(fwd->gateway_host); freez(fwd->forward_host); + freez(fwd->auth_username); + freez(fwd->auth_password); free(fwd); return; diff --git a/urlmatch.c b/urlmatch.c index f1742c89..124cc6ec 100644 --- a/urlmatch.c +++ b/urlmatch.c @@ -1440,20 +1440,23 @@ jb_err parse_forwarder_address(char *address, char **hostname, int *port, char **username, char **password) { char *p; - *hostname = strdup_or_die(address); + char *tmp; + + tmp = *hostname = strdup_or_die(address); /* Parse username and password */ if (username && password && (NULL != (p = strchr(*hostname, '@')))) { *p++ = '\0'; - *username = *hostname; - *hostname = p; + *username = strdup_or_die(*hostname); + *hostname = strdup_or_die(p); if (NULL != (p = strchr(*username, ':'))) { *p++ = '\0'; *password = strdup_or_die(p); } + freez(tmp); } /* Parse hostname and port */