Module: wine Branch: master Commit: 7a07a5e34f36334fac9b63c01c6a80d5f8b5d75c URL: https://source.winehq.org/git/wine.git/?a=commit;h=7a07a5e34f36334fac9b63c01...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Mar 7 16:59:39 2018 +0100
kernel32: Return a non-empty username from GetNamedPipeHandleState.
Signed-off-by: Hans Leidekker hans@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/sync.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-)
diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c index b92c88d..972dbcc 100644 --- a/dlls/kernel32/sync.c +++ b/dlls/kernel32/sync.c @@ -40,6 +40,7 @@ #include "winioctl.h" #include "ddk/wdm.h"
+#include "wine/library.h" #include "wine/unicode.h" #include "kernel_private.h"
@@ -1784,16 +1785,22 @@ BOOL WINAPI GetNamedPipeHandleStateA( LPDWORD lpMaxCollectionCount, LPDWORD lpCollectDataTimeout, LPSTR lpUsername, DWORD nUsernameMaxSize) { - WARN("%p %p %p %p %p %p %d: semi-stub\n", - hNamedPipe, lpState, lpCurInstances, - lpMaxCollectionCount, lpCollectDataTimeout, - lpUsername, nUsernameMaxSize); + WCHAR *username = NULL; + BOOL ret;
- if (lpUsername && nUsernameMaxSize) - *lpUsername = 0; + WARN("%p %p %p %p %p %p %d: semi-stub\n", hNamedPipe, lpState, lpCurInstances, + lpMaxCollectionCount, lpCollectDataTimeout, lpUsername, nUsernameMaxSize); + + if (lpUsername && nUsernameMaxSize && + !(username = HeapAlloc(GetProcessHeap(), 0, nUsernameMaxSize * sizeof(WCHAR)))) return FALSE; + + ret = GetNamedPipeHandleStateW(hNamedPipe, lpState, lpCurInstances, lpMaxCollectionCount, + lpCollectDataTimeout, username, nUsernameMaxSize); + if (ret && username) + WideCharToMultiByte(CP_ACP, 0, username, -1, lpUsername, nUsernameMaxSize, NULL, NULL);
- return GetNamedPipeHandleStateW(hNamedPipe, lpState, lpCurInstances, - lpMaxCollectionCount, lpCollectDataTimeout, NULL, 0); + HeapFree(GetProcessHeap(), 0, username); + return ret; }
/*********************************************************************** @@ -1807,10 +1814,8 @@ BOOL WINAPI GetNamedPipeHandleStateW( IO_STATUS_BLOCK iosb; NTSTATUS status;
- FIXME("%p %p %p %p %p %p %d: semi-stub\n", - hNamedPipe, lpState, lpCurInstances, - lpMaxCollectionCount, lpCollectDataTimeout, - lpUsername, nUsernameMaxSize); + FIXME("%p %p %p %p %p %p %d: semi-stub\n", hNamedPipe, lpState, lpCurInstances, + lpMaxCollectionCount, lpCollectDataTimeout, lpUsername, nUsernameMaxSize);
if (lpMaxCollectionCount) *lpMaxCollectionCount = 0; @@ -1819,7 +1824,11 @@ BOOL WINAPI GetNamedPipeHandleStateW( *lpCollectDataTimeout = 0;
if (lpUsername && nUsernameMaxSize) - *lpUsername = 0; + { + const char *username = wine_get_user_name(); + int len = MultiByteToWideChar(CP_UNIXCP, 0, username, -1, lpUsername, nUsernameMaxSize); + if (!len) *lpUsername = 0; + }
if (lpState) {