secur32: Implement basic functionality for LsaGetLogonSessionData.

This commit is contained in:
Owen Rudge 2022-09-21 12:53:41 +01:00 committed by Alexandre Julliard
parent 402b8473c9
commit 283cefe242
2 changed files with 27 additions and 4 deletions

View file

@ -43,6 +43,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(secur32);
#define LSA_MAGIC_CREDENTIALS ('L' << 24 | 'S' << 16 | 'A' << 8 | '1')
#define LSA_MAGIC_CONTEXT ('L' << 24 | 'S' << 16 | 'A' << 8 | '2')
static const WCHAR *default_authentication_package = L"Negotiate";
struct lsa_package
{
ULONG package_id;
@ -157,9 +159,30 @@ NTSTATUS WINAPI LsaFreeReturnBuffer(PVOID buffer)
NTSTATUS WINAPI LsaGetLogonSessionData(PLUID LogonId,
PSECURITY_LOGON_SESSION_DATA* ppLogonSessionData)
{
FIXME("%p %p stub\n", LogonId, ppLogonSessionData);
*ppLogonSessionData = NULL;
return STATUS_NOT_IMPLEMENTED;
SECURITY_LOGON_SESSION_DATA *data;
int authpkg_len;
WCHAR *end;
FIXME("%p %p semi-stub\n", LogonId, ppLogonSessionData);
authpkg_len = wcslen(default_authentication_package) * sizeof(WCHAR);
data = calloc(1, sizeof(*data) + authpkg_len + sizeof(WCHAR));
if (!data) return STATUS_NO_MEMORY;
data->Size = sizeof(*data);
data->LogonId = *LogonId;
end = (WCHAR *)(data + 1);
wcscpy(end, default_authentication_package);
data->AuthenticationPackage.Length = authpkg_len;
data->AuthenticationPackage.MaximumLength = authpkg_len + sizeof(WCHAR);
data->AuthenticationPackage.Buffer = end;
*ppLogonSessionData = data;
return STATUS_SUCCESS;
}
NTSTATUS WINAPI LsaLogonUser(HANDLE LsaHandle, PLSA_STRING OriginName,

View file

@ -266,7 +266,7 @@ static void test_get_logon_session_data(void)
if (!ret) goto cleanup;
status = LsaGetLogonSessionData(&ts.AuthenticationId, &data);
todo_wine ok(!status, "got %08lx\n", status);
ok(!status, "got %08lx\n", status);
if (status) goto cleanup;