diff --git a/reactos/dll/win32/advapi32/misc/logon.c b/reactos/dll/win32/advapi32/misc/logon.c index 25cf381d9f6..b3ca1f708f3 100644 --- a/reactos/dll/win32/advapi32/misc/logon.c +++ b/reactos/dll/win32/advapi32/misc/logon.c @@ -125,20 +125,23 @@ CreateProcessAsUserA(HANDLE hToken, return FALSE; } - AccessToken.Token = hToken; - AccessToken.Thread = NULL; - - /* Set the new process token */ - Status = NtSetInformationProcess(lpProcessInformation->hProcess, - ProcessAccessToken, - (PVOID)&AccessToken, - sizeof(AccessToken)); - if (!NT_SUCCESS (Status)) + if (hToken != NULL) { - ERR("NtSetInformationProcess failed: 0x%08x\n", Status); - TerminateProcess(lpProcessInformation->hProcess, Status); - SetLastError(RtlNtStatusToDosError(Status)); - return FALSE; + AccessToken.Token = hToken; + AccessToken.Thread = NULL; + + /* Set the new process token */ + Status = NtSetInformationProcess(lpProcessInformation->hProcess, + ProcessAccessToken, + (PVOID)&AccessToken, + sizeof(AccessToken)); + if (!NT_SUCCESS (Status)) + { + ERR("NtSetInformationProcess failed: 0x%08x\n", Status); + TerminateProcess(lpProcessInformation->hProcess, Status); + SetLastError(RtlNtStatusToDosError(Status)); + return FALSE; + } } /* Resume the main thread */ @@ -190,20 +193,23 @@ CreateProcessAsUserW(HANDLE hToken, return FALSE; } - AccessToken.Token = hToken; - AccessToken.Thread = NULL; - - /* Set the new process token */ - Status = NtSetInformationProcess(lpProcessInformation->hProcess, - ProcessAccessToken, - (PVOID)&AccessToken, - sizeof(AccessToken)); - if (!NT_SUCCESS (Status)) + if (hToken != NULL) { - ERR("NtSetInformationProcess failed: 0x%08x\n", Status); - TerminateProcess(lpProcessInformation->hProcess, Status); - SetLastError(RtlNtStatusToDosError(Status)); - return FALSE; + AccessToken.Token = hToken; + AccessToken.Thread = NULL; + + /* Set the new process token */ + Status = NtSetInformationProcess(lpProcessInformation->hProcess, + ProcessAccessToken, + (PVOID)&AccessToken, + sizeof(AccessToken)); + if (!NT_SUCCESS (Status)) + { + ERR("NtSetInformationProcess failed: 0x%08x\n", Status); + TerminateProcess(lpProcessInformation->hProcess, Status); + SetLastError(RtlNtStatusToDosError(Status)); + return FALSE; + } } /* Resume the main thread */