From 34e92f5e777f9df0976372455ef772a8788a8152 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Tue, 12 Nov 2019 12:44:41 +0100 Subject: [PATCH] Fix an invalid free introduced in d01bb4028a9 --- loaders.c | 2 ++ urlmatch.c | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) 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 */ -- 2.39.2