]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
ldap: Fixed memory leak from commit efb64fdf80
authorSteve Holme <steve_holme@hotmail.com>
Sun, 4 Jan 2015 14:11:02 +0000 (14:11 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 4 Jan 2015 14:21:29 +0000 (14:21 +0000)
The unescapped DN was not freed after a successful character conversion.

lib/ldap.c

index 66be1263562364277c1edca462549018c42841a7..2b4b168ede602d9139d17541c43d4a2e2ec87d58 100644 (file)
@@ -737,6 +737,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
 
     LDAP_TRACE (("DN '%s'\n", dn));
 
+    /* Unescape the DN */
     unescapped = curl_easy_unescape(conn->data, dn, 0, NULL);
     if(!unescapped) {
       rc = LDAP_NO_MEMORY;
@@ -746,10 +747,13 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp)
 
 #if defined(CURL_LDAP_WIN) && \
     (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI))
+    /* Convert the unescapped string to a tchar */
     ludp->lud_dn = Curl_convert_UTF8_to_tchar(unescapped);
-    if(!ludp->lud_dn) {
-      Curl_safefree(unescapped);
 
+    /* Free the unescapped string as we are done with it */
+    Curl_unicodefree(unescapped);
+
+    if(!ludp->lud_dn) {
       rc = LDAP_NO_MEMORY;
 
       goto quit;