From 5ebcc6cdc1dff92055398b10af7ab74e8ae4eb31 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sun, 5 Aug 2018 16:16:53 +0200 Subject: [PATCH] [ADVAPI32] Add parameter checks to LogonUserExW and initialize the token handle. --- dll/win32/advapi32/misc/logon.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/dll/win32/advapi32/misc/logon.c b/dll/win32/advapi32/misc/logon.c index 88be6e5f398..f4e3f851dff 100644 --- a/dll/win32/advapi32/misc/logon.c +++ b/dll/win32/advapi32/misc/logon.c @@ -469,7 +469,21 @@ LogonUserExW( NTSTATUS SubStatus = STATUS_SUCCESS; NTSTATUS Status; - *phToken = NULL; + if ((ppProfileBuffer != NULL && pdwProfileLength == NULL) || + (ppProfileBuffer == NULL && pdwProfileLength != NULL)) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + if (ppProfileBuffer != NULL && pdwProfileLength != NULL) + { + *ppProfileBuffer = NULL; + *pdwProfileLength = 0; + } + + if (phToken != NULL) + *phToken = NULL; switch (dwLogonType) { @@ -654,9 +668,10 @@ LogonUserExW( TRACE("TokenHandle: %p\n", TokenHandle); } - *phToken = TokenHandle; + if (phToken != NULL) + *phToken = TokenHandle; - /* FIXME: return ppLogonSid, ppProfileBuffer, pdwProfileLength and pQuotaLimits */ + /* FIXME: return ppLogonSid and pQuotaLimits */ done: if (ProfileBuffer != NULL)