From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atlmailgw1.ami.com (atlmailgw1.ami.com []) by mx.groups.io with SMTP id smtpd.web11.809.1589489553710474823 for ; Thu, 14 May 2020 13:52:39 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: ami.com, ip: , mailfrom: oleksiyy@ami.com) X-AuditID: ac1060b2-0f7ff700000018d4-d1-5ebdaf966bae Received: from atlms1.us.megatrends.com (atlms1.us.megatrends.com [172.16.96.144]) (using TLS with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client did not present a certificate) by atlmailgw1.ami.com (Symantec Messaging Gateway) with SMTP id 51.77.06356.69FADBE5; Thu, 14 May 2020 16:52:38 -0400 (EDT) Received: from Oleksiy77.us.megatrends.com (172.16.97.158) by atlms1.us.megatrends.com (172.16.96.144) with Microsoft SMTP Server id 14.3.468.0; Thu, 14 May 2020 16:51:52 -0400 From: "Oleksiy Yakovlev" To: CC: , , , , , , , Subject: [PATCH V7 6/6] SignedCapsulePkg: Add FMP Capsule Image Header extension Date: Thu, 14 May 2020 16:51:45 -0400 Message-ID: <20200514205145.36956-7-oleksiyy@ami.com> X-Mailer: git-send-email 2.9.0.windows.1 In-Reply-To: <20200514205145.36956-1-oleksiyy@ami.com> References: <20200514205145.36956-1-oleksiyy@ami.com> MIME-Version: 1.0 Return-Path: oleksiyy@ami.com X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRmVeSWpSXmKPExsWyRiBhgu609XvjDP7+VbGY/7baon3CbDaL q7d+MVnM+zaD1WLdRw+LFfc2sFt0dPxjcmD32P79AqPH4j0vmQKYohoYbRLz8vJLEktSFVJS i5NtlQKKMssSkyuVFDJTbJUMlRQKchKTU3NT80pslRILClLzUpTsuBQwgA1QWWaeQmpecn5K Zl66rZJnsL+uhYWppa6hkl1IRqpCZl5aflFuYklmfp5Ccn5eCVB1agpQVCGhmzPj3Z+FjAWz xSquvp/H3MB4XKiLkZNDQsBE4sbbN8xdjFwcQgK7mCSmPdzMCuFsYZR4c/E6G0gVm4CmxIFj UxhBbBEBKYkpB2YygdjMAocZJTo+gcWFBYIljk++ARZnEVCV+HRkGwuIzStgKrH5zRlWiG0a EtPW3AWr4RQwk5j9/wiQzQG0zFTi6wQliHJBiZMzn7BAjJeQOPjiBTOILSQgK9F2/Dn7BEb+ WUjKZiEpW8DItIpRKLEkJzcxMye93FAvMTdTLzk/dxMjJP427WBsuWh+iJGJg/EQowQHs5II r9/63XFCvCmJlVWpRfnxRaU5qcWHGJ2A7p/ILMUNCkBgjMQbGxhIicI4hiZmJuZG5oaWJubG xkrivJPXrokTEkgHxmx2ampBahHMECYOTqkGRtm2lBdmyp+nrFgbP+ueuZJGktWSLy6eScq5 P+tmLF2oUJYdE2k90X7fVXX9R9afYs8dX/Lzh8fT/o07Z6/Vt+fYzKxmaPOTJ2fxiwOdiU12 zqm6ouUPb5mG5U5mDRe9bTxT/NbZ9+9P73fT10qYklusYGFW6GH1sM2rcfWZPZ+EBNaVbIvI UGIpzkg01GIuKk4EAEiD4CvUAgAA Content-Type: text/plain Add bitmask to structure which gives a binary-inspectable mechanism to determine if a capsule contains an authentication section or depex section. (UEFI 2.8 errata a, mantis 2026) Signed-off-by: Oleksiy Yakovlev Reviewed-by: Wei6 Xu Reviewed-by: Chao Zhang --- .../RecoveryModuleLoadPei/RecoveryModuleLoadPei.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c index 53b821c..12cc235 100644 --- a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c +++ b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/RecoveryModuleLoadPei.c @@ -328,10 +328,15 @@ ValidateFmpCapsule ( DEBUG((DEBUG_ERROR, "ImageHeader->Version(0x%x) Unknown\n", ImageHeader->Version)); return EFI_INVALID_PARAMETER; } - if (ImageHeader->Version < EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER_INIT_VERSION) { + /// + /// Current Init ImageHeader version is 3. UpdateHardwareInstance field was added in version 2 + /// and ImageCapsuleSupport field was added in version 3 + /// + if (ImageHeader->Version == 1) { FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance); + } else { + FmpImageHeaderSize = OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, ImageCapsuleSupport); } - // No overflow if (FmpImageSize != (UINT64)FmpImageHeaderSize + (UINT64)ImageHeader->UpdateImageSize + (UINT64)ImageHeader->UpdateVendorCodeSize) { DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) mismatch, UpdateImageSize(0x%x) UpdateVendorCodeSize(0x%x)\n", FmpImageSize, ImageHeader->UpdateImageSize, ImageHeader->UpdateVendorCodeSize)); @@ -639,9 +644,14 @@ ProcessFmpCapsuleImage ( } else { // // If the EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER is version 1, only match ImageTypeId. - // Header should exclude UpdateHardwareInstance field + // Header should exclude UpdateHardwareInstance field. + // If version is 2 Header should exclude ImageCapsuleSupport field. // - Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance); + if (ImageHeader->Version == 1) { + Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, UpdateHardwareInstance); + } else { + Image = (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER, ImageCapsuleSupport); + } } Status = ProcessRecoveryImage (Image, ImageHeader->UpdateImageSize); -- 2.9.0.windows.1 Please consider the environment before printing this email. The information contained in this message may be confidential and proprietary to American Megatrends (AMI). This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.