[PATCH] kernel32: Correctly restore protection in set_entry_point().

Paul Gofman pgofman at codeweavers.com
Tue Nov 2 07:29:57 CDT 2021


Signed-off-by: Paul Gofman <pgofman at codeweavers.com>
---
    Passing NULL old protection results in VirtualProtect failure.

 dlls/kernel32/kernel_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dlls/kernel32/kernel_main.c b/dlls/kernel32/kernel_main.c
index 89394e16430..4467af739e0 100644
--- a/dlls/kernel32/kernel_main.c
+++ b/dlls/kernel32/kernel_main.c
@@ -65,7 +65,7 @@ static void set_entry_point( HMODULE module, const char *name, DWORD rva )
                 TRACE( "setting %s at %p to %08x\n", name, &functions[ordinal], rva );
                 VirtualProtect( functions + ordinal, sizeof(*functions), PAGE_READWRITE, &oldprot );
                 functions[ordinal] = rva;
-                VirtualProtect( functions + ordinal, sizeof(*functions), oldprot, NULL );
+                VirtualProtect( functions + ordinal, sizeof(*functions), oldprot, &oldprot );
                 return;
             }
             if (res > 0) max = pos - 1;
-- 
2.31.1




More information about the wine-devel mailing list