]> granicus.if.org Git - curl/commitdiff
ntlm: fix memory leak
authorGisle Vanem <gvanem@broadpark.no>
Fri, 8 Feb 2013 14:50:23 +0000 (15:50 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 8 Feb 2013 14:51:27 +0000 (15:51 +0100)
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

index 93334c6012770512e317585dd7df8fdfb73ab1b7..c0a5e9ad551376b65b6d907cc3bf2fa3b8d83d32 100644 (file)
@@ -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);