From 41275cbabfcaebe3bd7dde7de3681fd9f16eb3e7 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 30 Jan 2018 10:58:31 +0100 Subject: [PATCH] ntdll: Don't return 64-bit image info to 32-bit processes. Signed-off-by: Alexandre Julliard --- dlls/kernel32/tests/loader.c | 3 --- dlls/ntdll/virtual.c | 9 +++++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c index 56bf1f4824a..38175da1453 100644 --- a/dlls/kernel32/tests/loader.c +++ b/dlls/kernel32/tests/loader.c @@ -290,15 +290,12 @@ static BOOL query_image_section( int id, const char *dll_name, const IMAGE_NT_HE entry_point = (char *)(ULONG_PTR)nt32->OptionalHeader.ImageBase + nt32->OptionalHeader.AddressOfEntryPoint; truncated = nt_header->FileHeader.SizeOfOptionalHeader < sizeof(IMAGE_OPTIONAL_HEADER32); } - todo_wine_if (entry_point == (void *)0x81231234 ) ok( (char *)image.TransferAddress == (char *)entry_point, "%u: TransferAddress wrong %p / %p (%08x)\n", id, image.TransferAddress, entry_point, nt_header->OptionalHeader.AddressOfEntryPoint ); ok( image.ZeroBits == 0, "%u: ZeroBits wrong %08x\n", id, image.ZeroBits ); - todo_wine_if (entry_point == (void *)0x81231234 ) ok( image.MaximumStackSize == max_stack || broken(truncated), "%u: MaximumStackSize wrong %lx / %lx\n", id, image.MaximumStackSize, max_stack ); - todo_wine_if (entry_point == (void *)0x81231234 ) ok( image.CommittedStackSize == commit_stack || broken(truncated), "%u: CommittedStackSize wrong %lx / %lx\n", id, image.CommittedStackSize, commit_stack ); if (truncated) diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c index d077eb72fe3..2327b13744e 100644 --- a/dlls/ntdll/virtual.c +++ b/dlls/ntdll/virtual.c @@ -3215,6 +3215,15 @@ NTSTATUS WINAPI NtQuerySection( HANDLE handle, SECTION_INFORMATION_CLASS class, info->ImageFileSize = image_info.file_size; info->CheckSum = image_info.checksum; if (ret_size) *ret_size = sizeof(*info); +#ifndef _WIN64 /* don't return 64-bit values to 32-bit processes */ + if (image_info.machine == IMAGE_FILE_MACHINE_AMD64 || + image_info.machine == IMAGE_FILE_MACHINE_ARM64) + { + info->TransferAddress = (void *)0x81231234; /* sic */ + info->MaximumStackSize = 0x100000; + info->CommittedStackSize = 0x10000; + } +#endif } else status = STATUS_SECTION_NOT_IMAGE; } -- 2.11.4.GIT