From: Serge Gautherie <32623169+SergeGautherie@users.noreply.github.com> Date: Mon, 1 Jun 2020 18:20:31 +0000 (+0200) Subject: [CSRSRV] CsrUnhandledExceptionFilter: Check RtlAdjustPrivilege() result (#2864) X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=b5af1eb44a29025055c092066bc711bc4348bd3c;hp=7094297b7a5a108ec186726c520b503508bc7c38 [CSRSRV] CsrUnhandledExceptionFilter: Check RtlAdjustPrivilege() result (#2864) And remove unused NtRaiseHardError() Status assignment. Detected by Cppcheck: redundantAssignment. Related to commit d221bdfb (r55647). --- diff --git a/subsystems/win32/csrsrv/server.c b/subsystems/win32/csrsrv/server.c index 4fa35367927..3fce78b7fc5 100644 --- a/subsystems/win32/csrsrv/server.c +++ b/subsystems/win32/csrsrv/server.c @@ -659,6 +659,11 @@ CsrUnhandledExceptionFilter(IN PEXCEPTION_POINTERS ExceptionInfo) FALSE, &OldValue); } + if (!NT_SUCCESS(Status)) + { + DPRINT1("CsrUnhandledExceptionFilter(): RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE) failed, Status = 0x%08lx\n", Status); + goto NoPrivilege; + } /* Initialize our Name String */ RtlInitUnicodeString(&ErrorSource, L"Windows SubSystem"); @@ -670,14 +675,15 @@ CsrUnhandledExceptionFilter(IN PEXCEPTION_POINTERS ExceptionInfo) ErrorParameters[3] = (ULONG_PTR)ExceptionInfo->ContextRecord; /* Bugcheck */ - Status = NtRaiseHardError(STATUS_SYSTEM_PROCESS_TERMINATED, - 4, - 1, - ErrorParameters, - OptionShutdownSystem, - &Response); + NtRaiseHardError(STATUS_SYSTEM_PROCESS_TERMINATED, + 4, + 1, + ErrorParameters, + OptionShutdownSystem, + &Response); } +NoPrivilege: /* Just terminate us */ NtTerminateProcess(NtCurrentProcess(), ExceptionInfo->ExceptionRecord->ExceptionCode);