From 842e85bcdc6cbdf21e858b88c1019bfd39cca38e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Sat, 24 Mar 2012 16:02:58 -0400 Subject: [PATCH] libfreerdp-sspi: fix compilation on Linux without UNICODE definition --- include/freerdp/sspi/sspi.h | 4 +++- include/freerdp/utils/memory.h | 2 ++ libfreerdp-sspi/Kerberos/kerberos.c | 2 +- libfreerdp-sspi/NTLM/ntlm.c | 4 ++-- libfreerdp-sspi/Negotiate/negotiate.c | 2 +- libfreerdp-sspi/credssp.c | 1 - libfreerdp-sspi/sspi.c | 8 ++++---- libfreerdp-utils/memory.c | 25 +++++++++++++++++++++++++ 8 files changed, 38 insertions(+), 10 deletions(-) diff --git a/include/freerdp/sspi/sspi.h b/include/freerdp/sspi/sspi.h index 6af124912..6ea169238 100644 --- a/include/freerdp/sspi/sspi.h +++ b/include/freerdp/sspi/sspi.h @@ -20,6 +20,8 @@ #ifndef FREERDP_SSPI_H #define FREERDP_SSPI_H +#include + #include #include #include @@ -41,7 +43,7 @@ #define FREERDP_SSPI typedef char CHAR; -typedef uint16 WCHAR; +typedef wchar_t WCHAR; typedef CHAR* LPSTR; typedef WCHAR* LPWSTR; diff --git a/include/freerdp/utils/memory.h b/include/freerdp/utils/memory.h index 7d9944747..0bc548fa1 100644 --- a/include/freerdp/utils/memory.h +++ b/include/freerdp/utils/memory.h @@ -22,6 +22,7 @@ #include #include +#include #include FREERDP_API void* xmalloc(size_t size); @@ -30,6 +31,7 @@ FREERDP_API void* xrealloc(void* ptr, size_t size); FREERDP_API void xfree(void* ptr); FREERDP_API char* xstrdup(const char* str); FREERDP_API char* xstrtoup(const char* str); +FREERDP_API wchar_t* xwcsdup(const wchar_t* wstr); #define xnew(_type) (_type*)xzalloc(sizeof(_type)) diff --git a/libfreerdp-sspi/Kerberos/kerberos.c b/libfreerdp-sspi/Kerberos/kerberos.c index 13ebaded5..aa304b901 100644 --- a/libfreerdp-sspi/Kerberos/kerberos.c +++ b/libfreerdp-sspi/Kerberos/kerberos.c @@ -364,7 +364,7 @@ SECURITY_STATUS SEC_ENTRY kerberos_QueryCredentialsAttributesA(PCredHandle phCre if (ulAttribute == SECPKG_CRED_ATTR_NAMES) { CREDENTIALS* credentials; - SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; + //SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; credentials = (CREDENTIALS*) sspi_SecureHandleGetLowerPointer(phCredential); diff --git a/libfreerdp-sspi/NTLM/ntlm.c b/libfreerdp-sspi/NTLM/ntlm.c index e460c3dec..0e6701883 100644 --- a/libfreerdp-sspi/NTLM/ntlm.c +++ b/libfreerdp-sspi/NTLM/ntlm.c @@ -202,7 +202,7 @@ SECURITY_STATUS SEC_ENTRY ntlm_QueryCredentialsAttributesW(PCredHandle phCredent if (ulAttribute == SECPKG_CRED_ATTR_NAMES) { CREDENTIALS* credentials; - SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; + //SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; credentials = (CREDENTIALS*) sspi_SecureHandleGetLowerPointer(phCredential); @@ -220,7 +220,7 @@ SECURITY_STATUS SEC_ENTRY ntlm_QueryCredentialsAttributesA(PCredHandle phCredent if (ulAttribute == SECPKG_CRED_ATTR_NAMES) { CREDENTIALS* credentials; - SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; + //SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; credentials = (CREDENTIALS*) sspi_SecureHandleGetLowerPointer(phCredential); diff --git a/libfreerdp-sspi/Negotiate/negotiate.c b/libfreerdp-sspi/Negotiate/negotiate.c index 60945a45e..a37357e3a 100644 --- a/libfreerdp-sspi/Negotiate/negotiate.c +++ b/libfreerdp-sspi/Negotiate/negotiate.c @@ -229,7 +229,7 @@ SECURITY_STATUS SEC_ENTRY negotiate_QueryCredentialsAttributesA(PCredHandle phCr if (ulAttribute == SECPKG_CRED_ATTR_NAMES) { CREDENTIALS* credentials; - SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; + //SecPkgCredentials_Names* credential_names = (SecPkgCredentials_Names*) pBuffer; credentials = (CREDENTIALS*) sspi_SecureHandleGetLowerPointer(phCredential); diff --git a/libfreerdp-sspi/credssp.c b/libfreerdp-sspi/credssp.c index 67f058645..a99c21b7e 100644 --- a/libfreerdp-sspi/credssp.c +++ b/libfreerdp-sspi/credssp.c @@ -1025,7 +1025,6 @@ void credssp_free(rdpCredssp* credssp) xfree(credssp->identity.User); xfree(credssp->identity.Domain); xfree(credssp->identity.Password); - xfree(credssp->table); xfree(credssp); } } diff --git a/libfreerdp-sspi/sspi.c b/libfreerdp-sspi/sspi.c index c7e8aab8d..eae1fba3c 100644 --- a/libfreerdp-sspi/sspi.c +++ b/libfreerdp-sspi/sspi.c @@ -366,8 +366,8 @@ SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesW(uint32* pcPackages, PSecPkg pPackageInfo[index].wVersion = SecPkgInfoW_LIST[index]->wVersion; pPackageInfo[index].wRPCID = SecPkgInfoW_LIST[index]->wRPCID; pPackageInfo[index].cbMaxToken = SecPkgInfoW_LIST[index]->cbMaxToken; - pPackageInfo[index].Name = _wcsdup(SecPkgInfoW_LIST[index]->Name); - pPackageInfo[index].Comment = _wcsdup(SecPkgInfoW_LIST[index]->Comment); + pPackageInfo[index].Name = xwcsdup(SecPkgInfoW_LIST[index]->Name); + pPackageInfo[index].Comment = xwcsdup(SecPkgInfoW_LIST[index]->Comment); } *(pcPackages) = cPackages; @@ -454,8 +454,8 @@ SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoW(SEC_WCHAR* pszPackageName, P pPackageInfo->wVersion = SecPkgInfoW_LIST[index]->wVersion; pPackageInfo->wRPCID = SecPkgInfoW_LIST[index]->wRPCID; pPackageInfo->cbMaxToken = SecPkgInfoW_LIST[index]->cbMaxToken; - pPackageInfo->Name = _wcsdup(SecPkgInfoW_LIST[index]->Name); - pPackageInfo->Comment = _wcsdup(SecPkgInfoW_LIST[index]->Comment); + pPackageInfo->Name = xwcsdup(SecPkgInfoW_LIST[index]->Name); + pPackageInfo->Comment = xwcsdup(SecPkgInfoW_LIST[index]->Comment); *(ppPackageInfo) = pPackageInfo; diff --git a/libfreerdp-utils/memory.c b/libfreerdp-utils/memory.c index 05eaacf7e..a4abc3cba 100644 --- a/libfreerdp-utils/memory.c +++ b/libfreerdp-utils/memory.c @@ -126,6 +126,31 @@ char* xstrdup(const char* str) return mem; } +/** + * Duplicate a string in memory. + * @param wstr + * @return + */ + +wchar_t* xwcsdup(const wchar_t* wstr) +{ + wchar_t* mem; + + if (wstr == NULL) + return NULL; + +#ifdef _WIN32 + mem = _wcsdup(wstr); +#else + mem = wcsdup(wstr); +#endif + + if (mem == NULL) + perror("wstrdup"); + + return mem; +} + char* xstrtoup(const char* str) { char* out;