[PATCH] ntdll: Fix DEP status initialization

Michael Karcher wine at mkarcher.dialup.fu-berlin.de
Fri Sep 11 18:27:42 CDT 2009


Make sure that virtual.c's and process.c's view of DEP are in sync. This
changes the initialization value in process.c to match the one in
virtual.c (and expected by loader.c) and has loader.c call the official
API to turn off DEP if needed that makes sure the DEP status stays
consistent
---
 dlls/ntdll/loader.c  |    4 +++-
 dlls/ntdll/process.c |    2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index df4bb01..647de94 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -809,8 +809,10 @@ static WINE_MODREF *alloc_module( HMODULE hModule, LPCWSTR filename )
 
     if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT))
     {
+        ULONG flags = MEM_EXECUTE_OPTION_ENABLE;
         WARN( "disabling no-exec because of %s\n", debugstr_w(wm->ldr.BaseDllName.Buffer) );
-        VIRTUAL_SetForceExec( TRUE );
+        NtSetInformationProcess( GetCurrentProcess(), ProcessExecuteFlags,
+                                 &flags, sizeof(flags) );
     }
     return wm;
 }
diff --git a/dlls/ntdll/process.c b/dlls/ntdll/process.c
index 2f86e2d..573ee86 100644
--- a/dlls/ntdll/process.c
+++ b/dlls/ntdll/process.c
@@ -37,7 +37,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ntdll);
 
-static ULONG execute_flags = MEM_EXECUTE_OPTION_ENABLE;
+static ULONG execute_flags = MEM_EXECUTE_OPTION_DISABLE;
 
 /*
  *	Process object
-- 
1.6.3.3




More information about the wine-patches mailing list