Thomas Faber : rpcrt4: Do not omit mandatory argument to VirtualProtect.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 23 12:57:40 CDT 2014


Module: wine
Branch: master
Commit: 8fe759dfae41f518940764788ebbd3544c2541b4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=8fe759dfae41f518940764788ebbd3544c2541b4

Author: Thomas Faber <thomas.faber at reactos.org>
Date:   Sat Jun 21 18:44:57 2014 +0200

rpcrt4: Do not omit mandatory argument to VirtualProtect.

---

 dlls/rpcrt4/cproxy.c | 3 ++-
 dlls/rpcrt4/cstub.c  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/rpcrt4/cproxy.c b/dlls/rpcrt4/cproxy.c
index b1acbb0..7513b19 100644
--- a/dlls/rpcrt4/cproxy.c
+++ b/dlls/rpcrt4/cproxy.c
@@ -192,13 +192,14 @@ static const struct thunk *allocate_block( unsigned int num )
 {
     unsigned int i;
     struct thunk *prev, *block;
+    DWORD oldprot;
 
     block = VirtualAlloc( NULL, BLOCK_SIZE * sizeof(*block),
                           MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE );
     if (!block) return NULL;
 
     for (i = 0; i < BLOCK_SIZE; i++) init_thunk( &block[i], BLOCK_SIZE * num + i + 3 );
-    VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, NULL );
+    VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, &oldprot );
     prev = InterlockedCompareExchangePointer( (void **)&method_blocks[num], block, NULL );
     if (prev) /* someone beat us to it */
     {
diff --git a/dlls/rpcrt4/cstub.c b/dlls/rpcrt4/cstub.c
index 680b22e..0ddb1aa 100644
--- a/dlls/rpcrt4/cstub.c
+++ b/dlls/rpcrt4/cstub.c
@@ -194,6 +194,7 @@ static const vtbl_method_t *allocate_block( unsigned int num )
 {
     unsigned int i;
     vtbl_method_t *prev, *block;
+    DWORD oldprot;
 
     block = VirtualAlloc( NULL, BLOCK_SIZE * sizeof(*block),
                           MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE );
@@ -204,7 +205,7 @@ static const vtbl_method_t *allocate_block( unsigned int num )
         memcpy( &block[i], opcodes, sizeof(opcodes) );
         block[i].offset = (BLOCK_SIZE * num + i + 3) * sizeof(void *);
     }
-    VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, NULL );
+    VirtualProtect( block, BLOCK_SIZE * sizeof(*block), PAGE_EXECUTE_READ, &oldprot );
     prev = InterlockedCompareExchangePointer( (void **)&method_blocks[num], block, NULL );
     if (prev) /* someone beat us to it */
     {




More information about the wine-cvs mailing list