From 463082bea42d8bea751303da340218a18fb67e85 Mon Sep 17 00:00:00 2001
From: Gisle Vanem <gvanem@broadpark.no>
Date: Fri, 8 Feb 2013 15:50:23 +0100
Subject: [PATCH] ntlm: fix memory leak

Running tests\libtest\libntlmconnect.exe reveals a 1 byte (!) leak in
./lib/curl_ntlm_msgs.c:

perl ..\memanalyze.pl c:memdebug.curl
Leak detected: memory still allocated: 1 bytes
At 9771e8, there's 1 bytes.
allocated by curl_ntlm_msgs.c:399

Snippet from curl_ntlm_msgs.c:
   /* setup ntlm identity's domain and length */
   dup_domain.tchar_ptr = malloc(sizeof(TCHAR) * (domlen + 1));

(my domlen == 0).

'dup_domain.tbyte_ptr' looks to be freed in Curl_ntlm_sspi_cleanup() via
'ntlm->identity.Domain'. But I see no freeing of 'dup_domain.tchar_ptr'.
---
 lib/curl_ntlm_msgs.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lib/curl_ntlm_msgs.c b/lib/curl_ntlm_msgs.c
index 93334c6012..c0a5e9ad55 100644
--- a/lib/curl_ntlm_msgs.c
+++ b/lib/curl_ntlm_msgs.c
@@ -405,6 +405,7 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp,
     *(dup_domain.tchar_ptr + domlen) = TEXT('\0');
     ntlm->identity.Domain = dup_domain.tbyte_ptr;
     ntlm->identity.DomainLength = curlx_uztoul(domlen);
+    free(dup_domain.tchar_ptr);
     dup_domain.tchar_ptr = NULL;
 
     Curl_unicodefree(useranddomain.tchar_ptr);
-- 
GitLab