Module: wine Branch: master Commit: 3c3cf47a1922f901be71d7e5901ec822346b330a URL: https://gitlab.winehq.org/wine/wine/-/commit/3c3cf47a1922f901be71d7e5901ec82...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Feb 28 15:06:21 2023 +0100
ntdll: Also check for data execution on x86-64.
It can still be disabled from Wow64.
---
dlls/ntdll/unix/signal_x86_64.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index 9cb5d8199d7..07ffb269d19 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -2010,6 +2010,15 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext ) leave_handler( ucontext ); return; } + if (rec.ExceptionCode == EXCEPTION_ACCESS_VIOLATION && + rec.ExceptionInformation[0] == EXCEPTION_EXECUTE_FAULT) + { + ULONG flags; + NtQueryInformationProcess( GetCurrentProcess(), ProcessExecuteFlags, + &flags, sizeof(flags), NULL ); + /* send EXCEPTION_EXECUTE_FAULT only if data execution prevention is enabled */ + if (!(flags & MEM_EXECUTE_OPTION_DISABLE)) rec.ExceptionInformation[0] = EXCEPTION_READ_FAULT; + } break; case TRAP_x86_ALIGNFLT: /* Alignment check exception */ if (EFL_sig(ucontext) & 0x00040000)