- Save SizeOfImage field from the image header during PE loading.

svn path=/trunk/; revision=36300
This commit is contained in:
Aleksey Bragin 2008-09-18 11:19:29 +00:00
parent 15ae0a215b
commit 0395b8a56a

View file

@ -362,6 +362,9 @@ l_ReadHeaderFromFile:
if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, ImageBase)) if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, ImageBase))
ImageSectionObject->ImageBase = piohOptHeader->ImageBase; ImageSectionObject->ImageBase = piohOptHeader->ImageBase;
if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, SizeOfImage))
ImageSectionObject->ImageSize = piohOptHeader->SizeOfImage;
if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, SizeOfStackReserve)) if(RTL_CONTAINS_FIELD(piohOptHeader, cbOptHeaderSize, SizeOfStackReserve))
ImageSectionObject->StackReserve = piohOptHeader->SizeOfStackReserve; ImageSectionObject->StackReserve = piohOptHeader->SizeOfStackReserve;
@ -386,6 +389,14 @@ l_ReadHeaderFromFile:
ImageSectionObject->ImageBase = pioh64OptHeader->ImageBase; 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(RTL_CONTAINS_FIELD(pioh64OptHeader, cbOptHeaderSize, SizeOfStackReserve))
{ {
if(pioh64OptHeader->SizeOfStackReserve > MAXULONG_PTR) if(pioh64OptHeader->SizeOfStackReserve > MAXULONG_PTR)