]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/GenFw/GenFw.c
BaseTools GenFw: Fix the issue to update the wrong size as SectionSize
[mirror_edk2.git] / BaseTools / Source / C / GenFw / GenFw.c
index c99782b78eca89ccffeb94347f56b2cfb517667c..8cab70ba4d5f649057a068e842a0b810ec76e0e1 100644 (file)
@@ -653,7 +653,11 @@ PeCoffConvertImageToXip (
     //\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
@@ -999,7 +1003,7 @@ Returns:
     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