From 71b4e606fdead3671f8d6b5fff5493d33aab7f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 13 Feb 2015 16:16:28 +0000 Subject: [PATCH] [BASESRV]: Only SHUTDOWN_NORETRY can be set via Get/SetProcessShutdownParameters APIs. svn path=/trunk/; revision=66248 --- reactos/subsystems/win/basesrv/proc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/reactos/subsystems/win/basesrv/proc.c b/reactos/subsystems/win/basesrv/proc.c index c947451ccc5..f6980c72875 100644 --- a/reactos/subsystems/win/basesrv/proc.c +++ b/reactos/subsystems/win/basesrv/proc.c @@ -288,7 +288,8 @@ CSR_API(BaseSrvGetProcessShutdownParam) ASSERT(CsrThread); ShutdownParametersRequest->ShutdownLevel = CsrThread->Process->ShutdownLevel; - ShutdownParametersRequest->ShutdownFlags = CsrThread->Process->ShutdownFlags; + /* Only SHUTDOWN_NORETRY flag is valid for this API. The other private flags are for CSRSRV/WINSRV only. */ + ShutdownParametersRequest->ShutdownFlags = CsrThread->Process->ShutdownFlags & SHUTDOWN_NORETRY; return STATUS_SUCCESS; } @@ -299,7 +300,15 @@ CSR_API(BaseSrvSetProcessShutdownParam) PCSR_THREAD CsrThread = CsrGetClientThread(); ASSERT(CsrThread); + /* Only SHUTDOWN_NORETRY flag is valid for this API. The other private flags are for CSRSRV/WINSRV only. */ + if (ShutdownParametersRequest->ShutdownFlags & ~SHUTDOWN_NORETRY) + { + /* If there were other flags specified, fail the call */ + return STATUS_INVALID_PARAMETER; + } + CsrThread->Process->ShutdownLevel = ShutdownParametersRequest->ShutdownLevel; + /* Notice that all the possible other private flags are reinitialized here */ CsrThread->Process->ShutdownFlags = ShutdownParametersRequest->ShutdownFlags; return STATUS_SUCCESS;