Alexandre Julliard : ntdll: Don' t return 64-bit image info to 32-bit processes.

Alexandre Julliard julliard at winehq.org
Tue Jan 30 14:38:14 CST 2018


Module: wine
Branch: master
Commit: 41275cbabfcaebe3bd7dde7de3681fd9f16eb3e7
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=41275cbabfcaebe3bd7dde7de3681fd9f16eb3e7

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue Jan 30 10:58:31 2018 +0100

ntdll: Don't return 64-bit image info to 32-bit processes.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 56bf1f4..38175da 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 d077eb7..2327b13 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;
         }




More information about the wine-cvs mailing list