]> granicus.if.org Git - curl/commitdiff
ldap: Convert DN output to UTF-8 when Unicode
authorSteve Holme <steve_holme@hotmail.com>
Wed, 7 Jan 2015 19:19:20 +0000 (19:19 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Wed, 7 Jan 2015 20:01:27 +0000 (20:01 +0000)
lib/ldap.c

index 0370d4bc6f091ca949c0b370e61f80a68da94c91..4390a4dff1531b72989ab2e00a8f5acfd9554c9d 100644 (file)
@@ -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);
     }