From a07901418affc8d357ad319c6dec993cc00d6915 Mon Sep 17 00:00:00 2001 From: Yonghong Zhu Date: Mon, 22 Aug 2016 15:08:24 +0800 Subject: [PATCH] BaseTools: add capsule image header for auth FMP capsule file in last commit 91ae29, it missed to add the EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER for the auth FMP capsule. Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu Reviewed-by: Liming Gao --- BaseTools/Source/Python/GenFds/Capsule.py | 15 +++++++++++---- BaseTools/Source/Python/GenFds/CapsuleData.py | 10 ---------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/BaseTools/Source/Python/GenFds/Capsule.py b/BaseTools/Source/Python/GenFds/Capsule.py index f8af12a7c2..93ecee10c6 100644 --- a/BaseTools/Source/Python/GenFds/Capsule.py +++ b/BaseTools/Source/Python/GenFds/Capsule.py @@ -141,6 +141,7 @@ class Capsule (CapsuleClassObject) : Content.write(File.read()) File.close() for fmp in self.FmpPayloadList: + Buffer = fmp.GenCapsuleSubItem() if fmp.Certificate_Guid: ExternalTool, ExternalOption = FindExtendTool([], GenFdsGlobalVariable.ArchList, fmp.Certificate_Guid) CmdOption = '' @@ -161,7 +162,7 @@ class Capsule (CapsuleClassObject) : dwLength = 4 + 2 + 2 + 16 + os.path.getsize(CapOutputTmp) - os.path.getsize(CapInputFile) else: dwLength = 4 + 2 + 2 + 16 + 16 + 256 + 256 - Buffer = pack('Q', fmp.MonotonicCount) + Buffer += pack('Q', fmp.MonotonicCount) Buffer += pack('I', dwLength) Buffer += pack('H', WIN_CERT_REVISION) Buffer += pack('H', WIN_CERT_TYPE_EFI_GUID) @@ -178,10 +179,16 @@ class Capsule (CapsuleClassObject) : PreSize += len(Buffer) Content.write(Buffer) else: - payload = fmp.GenCapsuleSubItem() + ImageFile = open(fmp.ImageFile, 'rb') + Buffer += ImageFile.read() + ImageFile.close() + if fmp.VendorCodeFile: + VendorFile = open(fmp.VendorCodeFile, 'rb') + Buffer += VendorFile.read() + VendorFile.close() FwMgrHdr.write(pack('=Q', PreSize)) - PreSize += len(payload) - Content.write(payload) + PreSize += len(Buffer) + Content.write(Buffer) BodySize = len(FwMgrHdr.getvalue()) + len(Content.getvalue()) Header.write(pack('=I', HdrSize + BodySize)) # diff --git a/BaseTools/Source/Python/GenFds/CapsuleData.py b/BaseTools/Source/Python/GenFds/CapsuleData.py index 2a5c4545de..5d5a1e41ea 100644 --- a/BaseTools/Source/Python/GenFds/CapsuleData.py +++ b/BaseTools/Source/Python/GenFds/CapsuleData.py @@ -216,14 +216,4 @@ class CapsulePayload(CapsuleData): VendorFileSize, int(self.HardwareInstance, 16) ) - # - # Append file content to the structure - # - ImageFile = open(self.ImageFile, 'rb') - Buffer += ImageFile.read() - ImageFile.close() - if self.VendorCodeFile: - VendorFile = open(self.VendorCodeFile, 'rb') - Buffer += VendorFile.read() - VendorFile.close() return Buffer