Skip to content

Commit 25891ee

Browse files
julliardPaul Gofman
authored andcommitted
kernelbase: Don't use WRITECOPY protection on anonymous mappings.
(cherry picked from commit 2ac86fb) CW-Bug-Id: #23951
1 parent 9d4635d commit 25891ee

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

dlls/kernelbase/memory.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH WriteProcessMemory( HANDLE process, void *addr, co
604604
SIZE_T size, SIZE_T *bytes_written )
605605
{
606606
CROSS_PROCESS_WORK_LIST *list = open_cross_process_connection( process );
607-
DWORD old_prot, prot = PAGE_TARGETS_NO_UPDATE | PAGE_ENCLAVE_NO_CHANGE | PAGE_EXECUTE_WRITECOPY;
607+
DWORD old_prot, prot = PAGE_TARGETS_NO_UPDATE | PAGE_ENCLAVE_NO_CHANGE;
608608
MEMORY_BASIC_INFORMATION info;
609609
void *base_addr;
610610
SIZE_T region_size;
@@ -634,6 +634,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH WriteProcessMemory( HANDLE process, void *addr, co
634634
base_addr = ROUND_ADDR( addr );
635635
region_size = ROUND_SIZE( addr, size );
636636
region_size = min( region_size, (char *)info.BaseAddress + info.RegionSize - (char *)base_addr );
637+
prot |= (info.Type == MEM_PRIVATE) ? PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_WRITECOPY;
637638

638639
send_cross_process_notification( list, CrossProcessPreVirtualProtect,
639640
base_addr, region_size, 1, prot );

0 commit comments

Comments
 (0)