Regression on ntdll:map_image function

Alexandre Julliard julliard at winehq.org
Tue Nov 11 13:48:45 CST 2003


Carlos Lozano <clozano at andago.com> writes:

> The problem happens in this line of the patch:
>
> -    if (!(view = VIRTUAL_CreateView( ptr, total_size, 0, VPROT_COMMITTED|VPROT_READ, hmapping )))
> +    if (!(view = VIRTUAL_CreateView( ptr, total_size, 0,
> +                                     VPROT_COMMITTED | VPROT_READ | VPROT_WRITE |
> +                                     VPROT_EXEC | VPROT_WRITECOPY | VPROT_IMAGE, hmapping )))
>
> It works fine, if you remove the flags VPROT_WRITE and VPROT_WRITECOPY.

This should fix it:

Index: dlls/ntdll/virtual.c
===================================================================
RCS file: /opt/cvs-commit/wine/dlls/ntdll/virtual.c,v
retrieving revision 1.17
diff -u -p -r1.17 virtual.c
--- dlls/ntdll/virtual.c	4 Nov 2003 04:50:19 -0000	1.17
+++ dlls/ntdll/virtual.c	11 Nov 2003 19:41:18 -0000
@@ -738,6 +738,7 @@ static NTSTATUS map_image( HANDLE hmappi
 
     /* set the image protections */
 
+    VIRTUAL_SetProt( view, ptr, header_size, VPROT_COMMITTED | VPROT_READ );
     sec = (IMAGE_SECTION_HEADER*)((char *)&nt->OptionalHeader+nt->FileHeader.SizeOfOptionalHeader);
     for (i = 0; i < nt->FileHeader.NumberOfSections; i++, sec++)
     {

-- 
Alexandre Julliard
julliard at winehq.com



More information about the wine-devel mailing list