From 0395b8a56a38d8a77f75390043c5016fd9056b11 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Thu, 18 Sep 2008 11:19:29 +0000 Subject: [PATCH] - Save SizeOfImage field from the image header during PE loading. svn path=/trunk/; revision=36300 --- reactos/ntoskrnl/mm/pe.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/reactos/ntoskrnl/mm/pe.c b/reactos/ntoskrnl/mm/pe.c index 56d96cedaf9..2b94a321f94 100644 --- a/reactos/ntoskrnl/mm/pe.c +++ b/reactos/ntoskrnl/mm/pe.c @@ -362,6 +362,9 @@ l_ReadHeaderFromFile: if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, ImageBase)) ImageSectionObject->ImageBase = piohOptHeader->ImageBase; + if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, SizeOfImage)) + ImageSectionObject->ImageSize = piohOptHeader->SizeOfImage; + if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, SizeOfStackReserve)) ImageSectionObject->StackReserve = piohOptHeader->SizeOfStackReserve; @@ -386,6 +389,14 @@ l_ReadHeaderFromFile: ImageSectionObject->ImageBase = pioh64OptHeader->ImageBase; } + if(RTL_CONTAINS_FIELD(pioh64OptHeader, cbOptHeaderSize, SizeOfImage)) + { + if(pioh64OptHeader->SizeOfImage > MAXULONG_PTR) + DIE(("SizeOfImage exceeds the address space\n")); + + ImageSectionObject->ImageSize = pioh64OptHeader->SizeOfImage; + } + if(RTL_CONTAINS_FIELD(pioh64OptHeader, cbOptHeaderSize, SizeOfStackReserve)) { if(pioh64OptHeader->SizeOfStackReserve > MAXULONG_PTR)