From ec418e7f55f5e38f8825187ae5dfe33fec31689b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Brandst=C3=A4tter?= Date: Wed, 11 Jul 2018 17:45:32 +0200 Subject: [PATCH] ntdll: Check for NULL context in NtGetContextThread. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Crash Bandicoot N. Sane Trilogy calls NtGetContextThread with the context being set to NULL which leads to a crash. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45428 Signed-off-by: Johannes Brandstätter Signed-off-by: Alexandre Julliard --- dlls/ntdll/signal_x86_64.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index 0d2536017bd..e751082d722 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -2160,9 +2160,13 @@ NTSTATUS WINAPI NtSetContextThread( HANDLE handle, const CONTEXT *context ) NTSTATUS WINAPI NtGetContextThread( HANDLE handle, CONTEXT *context ) { NTSTATUS ret; - DWORD needed_flags = context->ContextFlags; + DWORD needed_flags; BOOL self = (handle == GetCurrentThread()); + if (!context) return STATUS_INVALID_PARAMETER; + + needed_flags = context->ContextFlags; + /* debug registers require a server call */ if (context->ContextFlags & (CONTEXT_DEBUG_REGISTERS & ~CONTEXT_AMD64)) self = FALSE;