From ea93252ef1cb3dba44312ceec824d6436c54aa08 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Sat, 3 Jan 2015 21:54:11 +0000 Subject: ldap: Fixed Unicode usage for all Win32 builds Otherwise, the fixes in the previous commits would only be applicable to IDN and SSPI based builds and not others such as OpenSSL with LDAP enabled. --- lib/curl_multibyte.c | 7 ++++--- lib/curl_multibyte.h | 12 +++++++----- lib/ldap.c | 36 ++++++++++++------------------------ 3 files changed, 23 insertions(+), 32 deletions(-) diff --git a/lib/curl_multibyte.c b/lib/curl_multibyte.c index 6c02239eb..6e657228c 100644 --- a/lib/curl_multibyte.c +++ b/lib/curl_multibyte.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -22,7 +22,8 @@ #include "curl_setup.h" -#if defined(USE_WIN32_IDN) || (defined(USE_WINDOWS_SSPI) && defined(UNICODE)) +#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \ + defined(CURL_LDAP_WIN)) && defined(UNICODE)) /* * MultiByte conversions using Windows kernel32 library. @@ -79,4 +80,4 @@ char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w) return str_utf8; } -#endif /* USE_WIN32_IDN || (USE_WINDOWS_SSPI && UNICODE) */ +#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */ diff --git a/lib/curl_multibyte.h b/lib/curl_multibyte.h index 7ee5eae12..c260de386 100644 --- a/lib/curl_multibyte.h +++ b/lib/curl_multibyte.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2015, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -23,7 +23,8 @@ ***************************************************************************/ #include "curl_setup.h" -#if defined(USE_WIN32_IDN) || (defined(USE_WINDOWS_SSPI) && defined(UNICODE)) +#if defined(USE_WIN32_IDN) || ((defined(USE_WINDOWS_SSPI) || \ + defined(CURL_LDAP_WIN)) && defined(UNICODE)) /* * MultiByte conversions using Windows kernel32 library. @@ -32,10 +33,11 @@ wchar_t *Curl_convert_UTF8_to_wchar(const char *str_utf8); char *Curl_convert_wchar_to_UTF8(const wchar_t *str_w); -#endif /* USE_WIN32_IDN || (USE_WINDOWS_SSPI && UNICODE) */ +#endif /* USE_WIN32_IDN || ((USE_WINDOWS_SSPI || CURL_LDAP_WIN) && UNICODE) */ -#if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI) +#if defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI) || \ + defined(CURL_LDAP_WIN) /* * Macros Curl_convert_UTF8_to_tchar(), Curl_convert_tchar_to_UTF8() @@ -85,6 +87,6 @@ typedef union { #endif /* UNICODE */ -#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI */ +#endif /* USE_WIN32_IDN || USE_WINDOWS_SSPI || CURL_LDAP_WIN */ #endif /* HEADER_CURL_MULTIBYTE_H */ diff --git a/lib/ldap.c b/lib/ldap.c index cba06e6b2..83cb4f13b 100644 --- a/lib/ldap.c +++ b/lib/ldap.c @@ -81,8 +81,7 @@ typedef struct { char *lud_host; int lud_port; -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) TCHAR *lud_dn; TCHAR **lud_attrs; #else @@ -90,8 +89,7 @@ typedef struct { char **lud_attrs; #endif int lud_scope; -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) TCHAR *lud_filter; #else char *lud_filter; @@ -196,8 +194,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) #ifdef LDAP_OPT_NETWORK_TIMEOUT struct timeval ldap_timeout = {10,0}; /* 10 sec connection/search timeout */ #endif -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) TCHAR *host = NULL; TCHAR *user = NULL; TCHAR *passwd = NULL; @@ -229,8 +226,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) infof(data, "LDAP local: trying to establish %s connection\n", ldap_ssl ? "encrypted" : "cleartext"); -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) host = Curl_convert_UTF8_to_tchar(conn->host.name); if(!host) { result = CURLE_OUT_OF_MEMORY; @@ -425,8 +421,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) entryIterator; entryIterator = ldap_next_entry(server, entryIterator), num++) { BerElement *ber = NULL; -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) TCHAR *attribute; #else char *attribute; /*! suspicious that this isn't 'const' */ @@ -435,8 +430,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) /* Get the DN and write it to the client */ { -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) TCHAR *dn = ldap_get_dn(server, entryIterator); size_t dn_len = _tcslen(dn); #else @@ -474,8 +468,7 @@ static CURLcode Curl_ldap(struct connectdata *conn, bool *done) for(attribute = ldap_first_attribute(server, entryIterator, &ber); attribute; attribute = ldap_next_attribute(server, entryIterator, ber)) { -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) size_t attr_len = _tcslen(attribute); #else size_t attr_len = strlen(attribute); @@ -612,8 +605,7 @@ quit: ldapssl_client_deinit(); #endif /* HAVE_LDAP_SSL && CURL_HAS_NOVELL_LDAPSDK */ -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) Curl_unicodefree(passwd); Curl_unicodefree(user); Curl_unicodefree(host); @@ -753,8 +745,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp) goto quit; } -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) /* Convert the unescapped string to a tchar */ ludp->lud_dn = Curl_convert_UTF8_to_tchar(unescapped); @@ -792,8 +783,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp) } /* Allocate our array (+1 for the NULL entry) */ -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) ludp->lud_attrs = calloc(count + 1, sizeof(TCHAR *)); #else ludp->lud_attrs = calloc(count + 1, sizeof(char *)); @@ -821,8 +811,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp) goto quit; } -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) /* Convert the unescapped string to a tchar */ ludp->lud_attrs[i] = Curl_convert_UTF8_to_tchar(unescapped); @@ -888,8 +877,7 @@ static int _ldap_url_parse2 (const struct connectdata *conn, LDAPURLDesc *ludp) goto quit; } -#if defined(CURL_LDAP_WIN) && \ - (defined(USE_WIN32_IDN) || defined(USE_WINDOWS_SSPI)) +#if defined(CURL_LDAP_WIN) /* Convert the unescapped string to a tchar */ ludp->lud_filter = Curl_convert_UTF8_to_tchar(unescapped); -- cgit v1.2.3