Hans Leidekker : advapi32: Forward LogonUserA to LogonUserW.
Alexandre Julliard
julliard at winehq.org
Fri Jan 10 14:44:56 CST 2014
Module: wine
Branch: stable
Commit: aba364a256d85e399d4a5e75922bc09693df5a47
URL: http://source.winehq.org/git/wine.git/?a=commit;h=aba364a256d85e399d4a5e75922bc09693df5a47
Author: Hans Leidekker <hans at codeweavers.com>
Date: Wed Nov 13 15:32:55 2013 +0100
advapi32: Forward LogonUserA to LogonUserW.
(cherry picked from commit 7519cddddbe602c57caa078b88396e5654d68c38)
---
dlls/advapi32/advapi.c | 19 +++++++++++++++++--
dlls/advapi32/advapi32_misc.h | 12 ++++++++++++
2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/dlls/advapi32/advapi.c b/dlls/advapi32/advapi.c
index 860c728..884b5d1 100644
--- a/dlls/advapi32/advapi.c
+++ b/dlls/advapi32/advapi.c
@@ -35,6 +35,8 @@
#include "wine/unicode.h"
#include "wine/debug.h"
+#include "advapi32_misc.h"
+
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
/******************************************************************************
@@ -268,10 +270,23 @@ BOOL WINAPI InitiateSystemShutdownW( LPWSTR lpMachineName, LPWSTR lpMessage, DWO
BOOL WINAPI LogonUserA( LPCSTR lpszUsername, LPCSTR lpszDomain, LPCSTR lpszPassword,
DWORD dwLogonType, DWORD dwLogonProvider, PHANDLE phToken )
{
- FIXME("%s %s %p 0x%08x 0x%08x %p - stub\n", debugstr_a(lpszUsername),
+ WCHAR *usernameW = NULL, *domainW = NULL, *passwordW = NULL;
+ BOOL ret = FALSE;
+
+ TRACE("%s %s %p 0x%08x 0x%08x %p\n", debugstr_a(lpszUsername),
debugstr_a(lpszDomain), lpszPassword, dwLogonType, dwLogonProvider, phToken);
- return TRUE;
+ if (lpszUsername && !(usernameW = strdupAW( lpszUsername ))) return FALSE;
+ if (lpszDomain && !(domainW = strdupAW( lpszUsername ))) goto done;
+ if (lpszPassword && !(passwordW = strdupAW( lpszPassword ))) goto done;
+
+ ret = LogonUserW( usernameW, domainW, passwordW, dwLogonType, dwLogonProvider, phToken );
+
+done:
+ heap_free( usernameW );
+ heap_free( domainW );
+ heap_free( passwordW );
+ return ret;
}
BOOL WINAPI LogonUserW( LPCWSTR lpszUsername, LPCWSTR lpszDomain, LPCWSTR lpszPassword,
diff --git a/dlls/advapi32/advapi32_misc.h b/dlls/advapi32/advapi32_misc.h
index ace73f1..9dd48b8 100644
--- a/dlls/advapi32/advapi32_misc.h
+++ b/dlls/advapi32/advapi32_misc.h
@@ -22,6 +22,7 @@
#include "ntsecapi.h"
#include "winsvc.h"
+#include "winnls.h"
const char * debugstr_sid(PSID sid) DECLSPEC_HIDDEN;
BOOL ADVAPI_IsLocalComputer(LPCWSTR ServerName) DECLSPEC_HIDDEN;
@@ -52,4 +53,15 @@ static inline BOOL heap_free( void *mem )
return HeapFree( GetProcessHeap(), 0, mem );
}
+static inline WCHAR *strdupAW( const char *src )
+{
+ WCHAR *dst = NULL;
+ if (src)
+ {
+ DWORD len = MultiByteToWideChar( CP_ACP, 0, src, -1, NULL, 0 );
+ if ((dst = heap_alloc( len * sizeof(WCHAR) ))) MultiByteToWideChar( CP_ACP, 0, src, -1, dst, len );
+ }
+ return dst;
+}
+
#endif /* __WINE_ADVAPI32MISC_H */
More information about the wine-cvs
mailing list