Gijs Vermeulen : wtsapi32: Improve WTSQuerySessionInformationW stub.
Alexandre Julliard
julliard at winehq.org
Fri May 29 15:22:55 CDT 2020
Module: wine
Branch: master
Commit: 116890da122da856c49dc66643bda5cd8360339b
URL: https://source.winehq.org/git/wine.git/?a=commit;h=116890da122da856c49dc66643bda5cd8360339b
Author: Gijs Vermeulen <gijsvrm at gmail.com>
Date: Thu May 28 15:59:27 2020 +0200
wtsapi32: Improve WTSQuerySessionInformationW stub.
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wtsapi32/tests/wtsapi.c | 19 +++++++++++++++++++
dlls/wtsapi32/wtsapi32.c | 11 +++++++++++
2 files changed, 30 insertions(+)
diff --git a/dlls/wtsapi32/tests/wtsapi.c b/dlls/wtsapi32/tests/wtsapi.c
index f45598f548..c9312cd97c 100644
--- a/dlls/wtsapi32/tests/wtsapi.c
+++ b/dlls/wtsapi32/tests/wtsapi.c
@@ -97,6 +97,25 @@ static void test_WTSQuerySessionInformation(void)
char *buf2;
DWORD count;
+ SetLastError(0xdeadbeef);
+ count = 0;
+ ret = WTSQuerySessionInformationW(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSUserName, NULL, &count);
+ ok(!ret, "got %u\n", GetLastError());
+ ok(count == 0, "got %u\n", count);
+ ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "got %u\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ count = 1;
+ ret = WTSQuerySessionInformationW(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSUserName, NULL, &count);
+ ok(!ret, "got %u\n", GetLastError());
+ ok(count == 1, "got %u\n", count);
+ ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "got %u\n", GetLastError());
+
+ SetLastError(0xdeadbeef);
+ ret = WTSQuerySessionInformationW(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSUserName, &buf1, NULL);
+ ok(!ret, "got %u\n", GetLastError());
+ ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "got %u\n", GetLastError());
+
count = 0;
buf1 = NULL;
ret = WTSQuerySessionInformationW(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, WTSUserName, &buf1, &count);
diff --git a/dlls/wtsapi32/wtsapi32.c b/dlls/wtsapi32/wtsapi32.c
index 0ba05abf2c..ef3e0d10a0 100644
--- a/dlls/wtsapi32/wtsapi32.c
+++ b/dlls/wtsapi32/wtsapi32.c
@@ -341,6 +341,12 @@ BOOL WINAPI WTSQuerySessionInformationW(
FIXME("Stub %p 0x%08x %d %p %p\n", hServer, SessionId, WTSInfoClass,
Buffer, BytesReturned);
+ if (!Buffer || !BytesReturned)
+ {
+ SetLastError(ERROR_INVALID_USER_BUFFER);
+ return FALSE;
+ }
+
if (WTSInfoClass == WTSUserName)
{
WCHAR *username;
@@ -354,6 +360,11 @@ BOOL WINAPI WTSQuerySessionInformationW(
*BytesReturned = count * sizeof(WCHAR);
return TRUE;
}
+ else
+ {
+ *Buffer = NULL;
+ *BytesReturned = 0;
+ }
return FALSE;
}
More information about the wine-cvs
mailing list