https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f66a7e2e482f6dbcf171018a60e6807d5a66a6ba

commit f66a7e2e482f6dbcf171018a60e6807d5a66a6ba
Author:     Timo Kreuzer <[email protected]>
AuthorDate: Mon Jan 6 00:51:43 2020 +0100
Commit:     Timo Kreuzer <[email protected]>
CommitDate: Sat Oct 31 14:23:16 2020 +0100

    [NTOS:KE:X64] Zero out the context in KiDispatchException
---
 ntoskrnl/ke/amd64/except.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/ntoskrnl/ke/amd64/except.c b/ntoskrnl/ke/amd64/except.c
index 23ff7e016a9..40b01064d84 100644
--- a/ntoskrnl/ke/amd64/except.c
+++ b/ntoskrnl/ke/amd64/except.c
@@ -245,10 +245,13 @@ KiDispatchException(IN PEXCEPTION_RECORD ExceptionRecord,
     /* Increase number of Exception Dispatches */
     KeGetCurrentPrcb()->KeExceptionDispatchCount++;
 
+    /* Zero out the context to avoid leaking kernel stack memor to user mode */
+    RtlZeroMemory(&Context, sizeof(Context));
+
     /* Set the context flags */
     Context.ContextFlags = CONTEXT_ALL;
 
-    /* Get a Context */
+    /* Get the Context from the trap and exception frame */
     KeTrapFrameToContext(TrapFrame, ExceptionFrame, &Context);
 
     /* Look at our exception code */

Reply via email to