//\r
// Make the size of raw data in section header alignment.\r
//\r
- SectionHeader->SizeOfRawData = (SectionHeader->Misc.VirtualSize + PeHdr->Pe32.OptionalHeader.FileAlignment - 1) & (~(PeHdr->Pe32.OptionalHeader.FileAlignment - 1));\r
+ SectionSize = (SectionHeader->Misc.VirtualSize + PeHdr->Pe32.OptionalHeader.FileAlignment - 1) & (~(PeHdr->Pe32.OptionalHeader.FileAlignment - 1));\r
+ if (SectionSize < SectionHeader->SizeOfRawData) {\r
+ SectionHeader->SizeOfRawData = SectionSize;\r
+ }\r
+\r
SectionHeader->PointerToRawData = SectionHeader->VirtualAddress;\r
}\r
\r
CopyMem (\r
FileBuffer + SectionHeader->PointerToRawData,\r
(VOID*) (UINTN) (ImageContext.ImageAddress + SectionHeader->VirtualAddress),\r
- SectionHeader->SizeOfRawData\r
+ SectionHeader->SizeOfRawData < SectionHeader->Misc.VirtualSize ? SectionHeader->SizeOfRawData : SectionHeader->Misc.VirtualSize\r
);\r
}\r
\r