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