[BASESRV]

- Correctly set the VdmPower flag when the process being started is a NT VDM
- Return a correct status code if VDM access is forbidden.

svn path=/trunk/; revision=65170
This commit is contained in:
Hermès Bélusca-Maïto 2014-11-01 17:51:39 +00:00
parent fec7f48782
commit 2420e2ff0d
2 changed files with 10 additions and 4 deletions

View file

@ -71,7 +71,7 @@ CSR_API(BaseSrvCreateProcess)
HANDLE ProcessHandle, ThreadHandle;
PCSR_THREAD CsrThread;
PCSR_PROCESS Process;
ULONG Flags = 0, VdmPower = 0, DebugFlags = 0;
ULONG Flags = 0, DebugFlags = 0, VdmPower = 0;
/* Get the current client thread */
CsrThread = CsrGetClientThread();
@ -83,6 +83,13 @@ CSR_API(BaseSrvCreateProcess)
Flags = (ULONG_PTR)CreateProcessRequest->ProcessHandle & 3;
CreateProcessRequest->ProcessHandle = (HANDLE)((ULONG_PTR)CreateProcessRequest->ProcessHandle & ~3);
/* Some things should be done if this is a VDM process */
if (CreateProcessRequest->VdmBinaryType)
{
/* We need to set the VDM power later on */
VdmPower = 1;
}
/* Duplicate the process handle */
Status = NtDuplicateObject(Process->ProcessHandle,
CreateProcessRequest->ProcessHandle,
@ -112,10 +119,9 @@ CSR_API(BaseSrvCreateProcess)
return Status;
}
/* See if this is a VDM process */
/* If this is a VDM process, request VDM power */
if (VdmPower)
{
/* Request VDM powers */
Status = NtSetInformationProcess(ProcessHandle,
ProcessWx86Information,
&VdmPower,

View file

@ -576,7 +576,7 @@ CSR_API(BaseSrvCheckVDM)
BOOLEAN NewConsoleRecord = FALSE;
/* Don't do anything if the VDM has been disabled in the registry */
if (!BaseSrvIsVdmAllowed()) return STATUS_ACCESS_DENIED;
if (!BaseSrvIsVdmAllowed()) return STATUS_VDM_DISALLOWED;
/* Validate the message buffers */
if (!CsrValidateMessageBuffer(ApiMessage,