Commit 2934b4477a45f7960b62f7bac9301a6f4cc89679

punkymaniac 2021-06-03T11:21:39

Fix memory leak in git_smart__connect The call to git_proxy_options_dup will replace the url pointer of the proxy. But if the url pointer is already set, the old address will be lost forever and will never be free.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
diff --git a/src/transports/smart.c b/src/transports/smart.c
index da8fe8e..89ad05b 100644
--- a/src/transports/smart.c
+++ b/src/transports/smart.c
@@ -226,6 +226,9 @@ static int git_smart__connect(
 	t->url = git__strdup(url);
 	GIT_ERROR_CHECK_ALLOC(t->url);
 
+	if (t->proxy.url)
+		git_proxy_options_clear(&t->proxy);
+
 	if (git_proxy_options_dup(&t->proxy, proxy) < 0)
 		return -1;