From: Steve Holme Date: Wed, 7 Jan 2015 19:19:20 +0000 (+0000) Subject: ldap: Convert DN output to UTF-8 when Unicode X-Git-Tag: curl-7_40_0~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e420600c1266ee9afdab51657c76089606314e1;p=curl ldap: Convert DN output to UTF-8 when Unicode --- diff --git a/lib/ldap.c b/lib/ldap.c index 0370d4bc6..4390a4dff 100644 --- a/lib/ldap.c +++ b/lib/ldap.c @@ -430,23 +430,39 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) /* Get the DN and write it to the client */ { + char *name; + size_t name_len; #if defined(CURL_LDAP_WIN) TCHAR *dn = ldap_get_dn(server, entryIterator); - size_t dn_len = _tcslen(dn); + name = Curl_convert_tchar_to_UTF8(dn); + if(!name) { + ldap_memfree(dn); + + result = CURLE_OUT_OF_MEMORY; + + goto quit; + } #else - char *dn = ldap_get_dn(server, entryIterator); - size_t dn_len = strlen(dn); + char *dn = name = ldap_get_dn(server, entryIterator); #endif + name_len = strlen(name); result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"DN: ", 4); if(result) { +#if defined(CURL_LDAP_WIN) + Curl_unicodefree(name); +#endif ldap_memfree(dn); goto quit; } - result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *) dn, dn_len); + result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *) name, + name_len); if(result) { +#if defined(CURL_LDAP_WIN) + Curl_unicodefree(name); +#endif ldap_memfree(dn); goto quit; @@ -454,13 +470,19 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) result = Curl_client_write(conn, CLIENTWRITE_BODY, (char *)"\n", 1); if(result) { +#if defined(CURL_LDAP_WIN) + Curl_unicodefree(name); +#endif ldap_memfree(dn); goto quit; } - dlsize += dn_len + 5; + dlsize += name_len + 5; +#if defined(CURL_LDAP_WIN) + Curl_unicodefree(name); +#endif ldap_memfree(dn); }