Module: wine Branch: master Commit: 7aa6dcafbb1703984ac5d858b475110444a9f9b2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=7aa6dcafbb1703984ac5d858b...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Mar 6 09:08:10 2018 -0600
ntdll: Handle LOAD_LIBRARY_AS_IMAGE_RESOURCE modules when loading resources.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/loader.c | 7 ++----- dlls/ntdll/resource.c | 12 ++++++------ 2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index de2cc54..7140645 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -3277,11 +3277,8 @@ PVOID WINAPI RtlImageDirectoryEntryToData( HMODULE module, BOOL image, WORD dir, const IMAGE_NT_HEADERS *nt; DWORD addr;
- if ((ULONG_PTR)module & 1) /* mapped as data file */ - { - module = (HMODULE)((ULONG_PTR)module & ~1); - image = FALSE; - } + if ((ULONG_PTR)module & 1) image = FALSE; /* mapped as data file */ + module = (HMODULE)((ULONG_PTR)module & ~3); if (!(nt = RtlImageNtHeader( module ))) return NULL; if (nt->OptionalHeader.Magic == IMAGE_NT_OPTIONAL_HDR64_MAGIC) { diff --git a/dlls/ntdll/resource.c b/dlls/ntdll/resource.c index f542677..0d5172a 100644 --- a/dlls/ntdll/resource.c +++ b/dlls/ntdll/resource.c @@ -333,12 +333,12 @@ static inline NTSTATUS access_resource( HMODULE hmod, const IMAGE_RESOURCE_DATA_ { if (ptr) { - if (is_data_file_module(hmod)) - { - HMODULE mod = (HMODULE)((ULONG_PTR)hmod & ~1); - *ptr = RtlImageRvaToVa( RtlImageNtHeader(mod), mod, entry->OffsetToData, NULL ); - } - else *ptr = (char *)hmod + entry->OffsetToData; + BOOL is_data_file = is_data_file_module(hmod); + hmod = (HMODULE)((ULONG_PTR)hmod & ~3); + if (is_data_file) + *ptr = RtlImageRvaToVa( RtlImageNtHeader(hmod), hmod, entry->OffsetToData, NULL ); + else + *ptr = (char *)hmod + entry->OffsetToData; } if (size) *size = entry->Size; status = STATUS_SUCCESS;