From c01e010793239f6c77f6d24823f7f159d5101c7e Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Tue, 5 Mar 2013 00:40:27 +0100 Subject: [PATCH] Reserve and commit memory in one step (fixes error found by Coverity, CID 989314). --- MemoryModule.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/MemoryModule.c b/MemoryModule.c index fc10cb7..7ca2a3e 100644 --- a/MemoryModule.c +++ b/MemoryModule.c @@ -323,16 +323,18 @@ HMEMORYMODULE MemoryLoadLibrary(const void *data) } // reserve memory for image of library + // XXX: is it correct to commit the complete memory region at once? + // calling DllEntry raises an exception if we don't... code = (unsigned char *)VirtualAlloc((LPVOID)(old_header->OptionalHeader.ImageBase), old_header->OptionalHeader.SizeOfImage, - MEM_RESERVE, + MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); if (code == NULL) { // try to allocate memory at arbitrary position code = (unsigned char *)VirtualAlloc(NULL, old_header->OptionalHeader.SizeOfImage, - MEM_RESERVE, + MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); if (code == NULL) { #if DEBUG_OUTPUT @@ -348,13 +350,6 @@ HMEMORYMODULE MemoryLoadLibrary(const void *data) result->modules = NULL; result->initialized = 0; - // XXX: is it correct to commit the complete memory region at once? - // calling DllEntry raises an exception if we don't... - VirtualAlloc(code, - old_header->OptionalHeader.SizeOfImage, - MEM_COMMIT, - PAGE_READWRITE); - // commit memory for headers headers = (unsigned char *)VirtualAlloc(code, old_header->OptionalHeader.SizeOfHeaders,