From 9979c793e80cf91d15efb3b87f99080b59f0450b Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 19 Sep 2017 12:03:09 +0200 Subject: [PATCH] ntdll: Don't clear the last page of the initial stack. Signed-off-by: Alexandre Julliard --- dlls/ntdll/loader.c | 2 +- dlls/ntdll/virtual.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index 1bfd8f1fba6..31d83236c47 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -3152,7 +3152,7 @@ void WINAPI LdrInitializeThunk( void *kernel_start, ULONG_PTR unknown2, if ((status = fixup_imports( wm, load_path )) != STATUS_SUCCESS) goto error; heap_set_debug_flags( GetProcessHeap() ); - status = wine_call_on_stack( attach_process_dlls, wm, NtCurrentTeb()->Tib.StackBase ); + status = wine_call_on_stack( attach_process_dlls, wm, (char *)NtCurrentTeb()->Tib.StackBase - page_size ); if (status != STATUS_SUCCESS) goto error; virtual_release_address_space(); diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index e4896eae37f..a452c58a44d 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -1745,8 +1745,8 @@ void virtual_clear_thread_stack(void) void *stack = NtCurrentTeb()->Tib.StackLimit; size_t size = (char *)NtCurrentTeb()->Tib.StackBase - (char *)NtCurrentTeb()->Tib.StackLimit; - wine_anon_mmap( stack, size, PROT_READ | PROT_WRITE, MAP_FIXED ); - if (force_exec_prot) mprotect( stack, size, PROT_READ | PROT_WRITE | PROT_EXEC ); + wine_anon_mmap( stack, size - page_size, PROT_READ | PROT_WRITE, MAP_FIXED ); + if (force_exec_prot) mprotect( stack, size - page_size, PROT_READ | PROT_WRITE | PROT_EXEC ); } -- 2.11.4.GIT