ntdll: Prevent page faults from ATL thunk check to reach debuggers
Michael Karcher
wine at mkarcher.dialup.fu-berlin.de
Sat Jul 25 13:04:07 CDT 2009
send_debug_event will not send the "first chance exception" message (or
any other) when Peb->BeingDebugged is zero.
---
dlls/ntdll/signal_i386.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index d0e0172..90c2d0a 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -1466,10 +1466,12 @@ struct atl_thunk
static BOOL check_atl_thunk( EXCEPTION_RECORD *rec, CONTEXT *context )
{
const struct atl_thunk *thunk = (const struct atl_thunk *)rec->ExceptionInformation[1];
+ int BeingDebugged = NtCurrentTeb()->Peb->BeingDebugged;
BOOL ret = FALSE;
__TRY
{
+ NtCurrentTeb()->Peb->BeingDebugged = 0;
if (thunk->movl == 0x042444c7 && thunk->jmp == 0xe9)
{
*((DWORD *)context->Esp + 1) = thunk->this;
@@ -1481,9 +1483,11 @@ static BOOL check_atl_thunk( EXCEPTION_RECORD *rec, CONTEXT *context )
}
__EXCEPT_PAGE_FAULT
{
+ NtCurrentTeb()->Peb->BeingDebugged = BeingDebugged;
return FALSE;
}
__ENDTRY
+ NtCurrentTeb()->Peb->BeingDebugged = BeingDebugged;
return ret;
}
--
1.6.3.3
More information about the wine-patches
mailing list