Alexandre Julliard : kernel32: Check for a 32-bit NT header before getting module address range in MODULE_GetBinaryType .
Alexandre Julliard
julliard at winehq.org
Wed Aug 12 11:10:01 CDT 2009
Module: wine
Branch: master
Commit: 4a59ac76f19c6df4a32b88584a2488ce6f659ccc
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4a59ac76f19c6df4a32b88584a2488ce6f659ccc
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Aug 12 15:47:57 2009 +0200
kernel32: Check for a 32-bit NT header before getting module address range in MODULE_GetBinaryType.
---
dlls/kernel32/module.c | 15 +++++++++++++--
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c
index 4d0a810..f93580c 100644
--- a/dlls/kernel32/module.c
+++ b/dlls/kernel32/module.c
@@ -282,7 +282,7 @@ DWORD MODULE_GetBinaryType( HANDLE hfile, void **res_start, void **res_end )
union
{
IMAGE_OS2_HEADER os2;
- IMAGE_NT_HEADERS nt;
+ IMAGE_NT_HEADERS32 nt;
} ext_header;
/* We do have a DOS image so we will now try to seek into
@@ -311,7 +311,18 @@ DWORD MODULE_GetBinaryType( HANDLE hfile, void **res_start, void **res_end )
if (res_start) *res_start = (void *)ext_header.nt.OptionalHeader.ImageBase;
if (res_end) *res_end = (void *)(ext_header.nt.OptionalHeader.ImageBase +
ext_header.nt.OptionalHeader.SizeOfImage);
- return ret;
+ switch (ext_header.nt.OptionalHeader.Magic)
+ {
+ case IMAGE_NT_OPTIONAL_HDR32_MAGIC:
+ if (res_start) *res_start = (void *)ext_header.nt.OptionalHeader.ImageBase;
+ if (res_end) *res_end = (void *)(ext_header.nt.OptionalHeader.ImageBase +
+ ext_header.nt.OptionalHeader.SizeOfImage);
+ return ret;
+ case IMAGE_NT_OPTIONAL_HDR64_MAGIC:
+ if (res_start) *res_start = NULL;
+ if (res_end) *res_end = NULL;
+ return ret;
+ }
}
return BINARY_DOS;
}
More information about the wine-cvs
mailing list