From nobody Thu May 2 06:29:50 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1504847927726874.2769392501667; Thu, 7 Sep 2017 22:18:47 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 70D1C21CEB0FB; Thu, 7 Sep 2017 22:15:52 -0700 (PDT) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 5C09021CEB0E2 for ; Thu, 7 Sep 2017 22:15:50 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Sep 2017 22:18:42 -0700 Received: from shwde7172.ccr.corp.intel.com ([10.239.9.14]) by fmsmga002.fm.intel.com with ESMTP; 07 Sep 2017 22:18:41 -0700 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,360,1500966000"; d="scan'208";a="1216212599" From: Liming Gao To: edk2-devel@lists.01.org Date: Fri, 8 Sep 2017 13:18:24 +0800 Message-Id: <1504847905-384-2-git-send-email-liming.gao@intel.com> X-Mailer: git-send-email 2.8.0.windows.1 In-Reply-To: <1504847905-384-1-git-send-email-liming.gao@intel.com> References: <1504847905-384-1-git-send-email-liming.gao@intel.com> Subject: [edk2] [Patch 1/2] MdePkg BaseLib: Add new API CalculateCrc32() X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" CalculateCrc32() bases on the initialized mCrcTable. When CalculateCrc32() is used, mCrcTable will take 1KB size in the image. When CalculateCrc32()=20 is not used, mCrcTable will not be built in the image, and no size impact. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao --- MdePkg/Include/Library/BaseLib.h | 18 +++ MdePkg/Library/BaseLib/CheckSum.c | 294 ++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 312 insertions(+) diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/Base= Lib.h index 40b96b7..de287a7 100644 --- a/MdePkg/Include/Library/BaseLib.h +++ b/MdePkg/Include/Library/BaseLib.h @@ -4829,6 +4829,24 @@ CalculateCheckSum64 ( IN UINTN Length ); =20 +/** + Computes and returns a 32-bit CRC for a data buffer. + + If Buffer is NULL, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param[in] Buffer A pointer to the buffer on which the 32-bit CRC= is to be computed. + @param[in] Length The number of bytes in the buffer Data. + + @retval Crc32 The 32-bit CRC was computed for the data buffe= r. + +**/ +UINT32 +EFIAPI +CalculateCrc32( + IN VOID *Buffer, + IN UINTN Length + ); =20 // // Base Library CPU Functions diff --git a/MdePkg/Library/BaseLib/CheckSum.c b/MdePkg/Library/BaseLib/Che= ckSum.c index 2968829..788af19 100644 --- a/MdePkg/Library/BaseLib/CheckSum.c +++ b/MdePkg/Library/BaseLib/CheckSum.c @@ -334,4 +334,298 @@ CalculateCheckSum64 ( return (UINT64) ((UINT64)(-1) - CheckSum + 1); } =20 +GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 mCrcTable[256] =3D { + 0x00000000, + 0x77073096, + 0xEE0E612C, + 0x990951BA, + 0x076DC419, + 0x706AF48F, + 0xE963A535, + 0x9E6495A3, + 0x0EDB8832, + 0x79DCB8A4, + 0xE0D5E91E, + 0x97D2D988, + 0x09B64C2B, + 0x7EB17CBD, + 0xE7B82D07, + 0x90BF1D91, + 0x1DB71064, + 0x6AB020F2, + 0xF3B97148, + 0x84BE41DE, + 0x1ADAD47D, + 0x6DDDE4EB, + 0xF4D4B551, + 0x83D385C7, + 0x136C9856, + 0x646BA8C0, + 0xFD62F97A, + 0x8A65C9EC, + 0x14015C4F, + 0x63066CD9, + 0xFA0F3D63, + 0x8D080DF5, + 0x3B6E20C8, + 0x4C69105E, + 0xD56041E4, + 0xA2677172, + 0x3C03E4D1, + 0x4B04D447, + 0xD20D85FD, + 0xA50AB56B, + 0x35B5A8FA, + 0x42B2986C, + 0xDBBBC9D6, + 0xACBCF940, + 0x32D86CE3, + 0x45DF5C75, + 0xDCD60DCF, + 0xABD13D59, + 0x26D930AC, + 0x51DE003A, + 0xC8D75180, + 0xBFD06116, + 0x21B4F4B5, + 0x56B3C423, + 0xCFBA9599, + 0xB8BDA50F, + 0x2802B89E, + 0x5F058808, + 0xC60CD9B2, + 0xB10BE924, + 0x2F6F7C87, + 0x58684C11, + 0xC1611DAB, + 0xB6662D3D, + 0x76DC4190, + 0x01DB7106, + 0x98D220BC, + 0xEFD5102A, + 0x71B18589, + 0x06B6B51F, + 0x9FBFE4A5, + 0xE8B8D433, + 0x7807C9A2, + 0x0F00F934, + 0x9609A88E, + 0xE10E9818, + 0x7F6A0DBB, + 0x086D3D2D, + 0x91646C97, + 0xE6635C01, + 0x6B6B51F4, + 0x1C6C6162, + 0x856530D8, + 0xF262004E, + 0x6C0695ED, + 0x1B01A57B, + 0x8208F4C1, + 0xF50FC457, + 0x65B0D9C6, + 0x12B7E950, + 0x8BBEB8EA, + 0xFCB9887C, + 0x62DD1DDF, + 0x15DA2D49, + 0x8CD37CF3, + 0xFBD44C65, + 0x4DB26158, + 0x3AB551CE, + 0xA3BC0074, + 0xD4BB30E2, + 0x4ADFA541, + 0x3DD895D7, + 0xA4D1C46D, + 0xD3D6F4FB, + 0x4369E96A, + 0x346ED9FC, + 0xAD678846, + 0xDA60B8D0, + 0x44042D73, + 0x33031DE5, + 0xAA0A4C5F, + 0xDD0D7CC9, + 0x5005713C, + 0x270241AA, + 0xBE0B1010, + 0xC90C2086, + 0x5768B525, + 0x206F85B3, + 0xB966D409, + 0xCE61E49F, + 0x5EDEF90E, + 0x29D9C998, + 0xB0D09822, + 0xC7D7A8B4, + 0x59B33D17, + 0x2EB40D81, + 0xB7BD5C3B, + 0xC0BA6CAD, + 0xEDB88320, + 0x9ABFB3B6, + 0x03B6E20C, + 0x74B1D29A, + 0xEAD54739, + 0x9DD277AF, + 0x04DB2615, + 0x73DC1683, + 0xE3630B12, + 0x94643B84, + 0x0D6D6A3E, + 0x7A6A5AA8, + 0xE40ECF0B, + 0x9309FF9D, + 0x0A00AE27, + 0x7D079EB1, + 0xF00F9344, + 0x8708A3D2, + 0x1E01F268, + 0x6906C2FE, + 0xF762575D, + 0x806567CB, + 0x196C3671, + 0x6E6B06E7, + 0xFED41B76, + 0x89D32BE0, + 0x10DA7A5A, + 0x67DD4ACC, + 0xF9B9DF6F, + 0x8EBEEFF9, + 0x17B7BE43, + 0x60B08ED5, + 0xD6D6A3E8, + 0xA1D1937E, + 0x38D8C2C4, + 0x4FDFF252, + 0xD1BB67F1, + 0xA6BC5767, + 0x3FB506DD, + 0x48B2364B, + 0xD80D2BDA, + 0xAF0A1B4C, + 0x36034AF6, + 0x41047A60, + 0xDF60EFC3, + 0xA867DF55, + 0x316E8EEF, + 0x4669BE79, + 0xCB61B38C, + 0xBC66831A, + 0x256FD2A0, + 0x5268E236, + 0xCC0C7795, + 0xBB0B4703, + 0x220216B9, + 0x5505262F, + 0xC5BA3BBE, + 0xB2BD0B28, + 0x2BB45A92, + 0x5CB36A04, + 0xC2D7FFA7, + 0xB5D0CF31, + 0x2CD99E8B, + 0x5BDEAE1D, + 0x9B64C2B0, + 0xEC63F226, + 0x756AA39C, + 0x026D930A, + 0x9C0906A9, + 0xEB0E363F, + 0x72076785, + 0x05005713, + 0x95BF4A82, + 0xE2B87A14, + 0x7BB12BAE, + 0x0CB61B38, + 0x92D28E9B, + 0xE5D5BE0D, + 0x7CDCEFB7, + 0x0BDBDF21, + 0x86D3D2D4, + 0xF1D4E242, + 0x68DDB3F8, + 0x1FDA836E, + 0x81BE16CD, + 0xF6B9265B, + 0x6FB077E1, + 0x18B74777, + 0x88085AE6, + 0xFF0F6A70, + 0x66063BCA, + 0x11010B5C, + 0x8F659EFF, + 0xF862AE69, + 0x616BFFD3, + 0x166CCF45, + 0xA00AE278, + 0xD70DD2EE, + 0x4E048354, + 0x3903B3C2, + 0xA7672661, + 0xD06016F7, + 0x4969474D, + 0x3E6E77DB, + 0xAED16A4A, + 0xD9D65ADC, + 0x40DF0B66, + 0x37D83BF0, + 0xA9BCAE53, + 0xDEBB9EC5, + 0x47B2CF7F, + 0x30B5FFE9, + 0xBDBDF21C, + 0xCABAC28A, + 0x53B39330, + 0x24B4A3A6, + 0xBAD03605, + 0xCDD70693, + 0x54DE5729, + 0x23D967BF, + 0xB3667A2E, + 0xC4614AB8, + 0x5D681B02, + 0x2A6F2B94, + 0xB40BBE37, + 0xC30C8EA1, + 0x5A05DF1B, + 0x2D02EF8D +}; =20 +/** + Computes and returns a 32-bit CRC for a data buffer. + + If Buffer is NULL, then ASSERT(). + If Length is greater than (MAX_ADDRESS - Buffer + 1), then ASSERT(). + + @param[in] Buffer A pointer to the buffer on which the 32-bit CRC= is to be computed. + @param[in] Length The number of bytes in the buffer Data. + + @retval Crc32 The 32-bit CRC was computed for the data buffe= r. + +**/ +UINT32 +EFIAPI +CalculateCrc32( + IN VOID *Buffer, + IN UINTN Length + ) +{ + UINTN Index; + UINT32 Crc; + UINT8 *Ptr; + + ASSERT (Buffer !=3D NULL); + ASSERT (Length <=3D (MAX_ADDRESS - ((UINTN) Buffer) + 1)); + + // + // Compute CRC + // + Crc =3D 0xffffffff; + for (Index =3D 0, Ptr =3D Buffer; Index < Length; Index++, Ptr++) { + Crc =3D (Crc >> 8) ^ mCrcTable[(UINT8) Crc ^ *Ptr]; + } + + return Crc ^ 0xffffffff; +} --=20 2.8.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Thu May 2 06:29:50 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1504847930054894.91528450084; Thu, 7 Sep 2017 22:18:50 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id ADECE21D2E62B; Thu, 7 Sep 2017 22:15:52 -0700 (PDT) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E964220945BE6 for ; Thu, 7 Sep 2017 22:15:50 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Sep 2017 22:18:42 -0700 Received: from shwde7172.ccr.corp.intel.com ([10.239.9.14]) by fmsmga002.fm.intel.com with ESMTP; 07 Sep 2017 22:18:42 -0700 X-Original-To: edk2-devel@lists.01.org X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,360,1500966000"; d="scan'208";a="1216212602" From: Liming Gao To: edk2-devel@lists.01.org Date: Fri, 8 Sep 2017 13:18:25 +0800 Message-Id: <1504847905-384-3-git-send-email-liming.gao@intel.com> X-Mailer: git-send-email 2.8.0.windows.1 In-Reply-To: <1504847905-384-1-git-send-email-liming.gao@intel.com> References: <1504847905-384-1-git-send-email-liming.gao@intel.com> Subject: [edk2] [Patch 2/2] MdeModulePkg: Update modules to consume CalculateCrc32() X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao --- MdeModulePkg/Core/RuntimeDxe/Crc32.c | 74 +------------- MdeModulePkg/Core/RuntimeDxe/Runtime.c | 5 - MdeModulePkg/Core/RuntimeDxe/Runtime.h | 9 -- .../PeiCrc32GuidedSectionExtractLib.c | 108 ++---------------= ---- .../PeiCrc32GuidedSectionExtractLib.inf | 3 +- 5 files changed, 11 insertions(+), 188 deletions(-) diff --git a/MdeModulePkg/Core/RuntimeDxe/Crc32.c b/MdeModulePkg/Core/Runti= meDxe/Crc32.c index a6fe77f..3e91e08 100644 --- a/MdeModulePkg/Core/RuntimeDxe/Crc32.c +++ b/MdeModulePkg/Core/RuntimeDxe/Crc32.c @@ -7,7 +7,7 @@ EFI Runtime Services Table are converted from physical address to virtual addresses. This requires that the 32-bit CRC be recomputed. =20 -Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD = License which accompanies this distribution. The full text of the license may be = found at @@ -20,8 +20,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER= EXPRESS OR IMPLIED. =20 =20 #include - -UINT32 mCrcTable[256]; +#include =20 /** Calculate CRC32 for target data. @@ -43,73 +42,6 @@ RuntimeDriverCalculateCrc32 ( OUT UINT32 *CrcOut ) { - UINT32 Crc; - UINTN Index; - UINT8 *Ptr; - - if (Data =3D=3D NULL || DataSize =3D=3D 0 || CrcOut =3D=3D NULL) { - return EFI_INVALID_PARAMETER; - } - - Crc =3D 0xffffffff; - for (Index =3D 0, Ptr =3D Data; Index < DataSize; Index++, Ptr++) { - Crc =3D (Crc >> 8) ^ mCrcTable[(UINT8) Crc ^ *Ptr]; - } - - *CrcOut =3D Crc ^ 0xffffffff; + *CrcOut =3D CalculateCrc32 (Data, DataSize); return EFI_SUCCESS; } - - -/** - This internal function reverses bits for 32bit data. - - @param Value The data to be reversed. - - @return Data reversed. - -**/ -UINT32 -ReverseBits ( - UINT32 Value - ) -{ - UINTN Index; - UINT32 NewValue; - - NewValue =3D 0; - for (Index =3D 0; Index < 32; Index++) { - if ((Value & (1 << Index)) !=3D 0) { - NewValue =3D NewValue | (1 << (31 - Index)); - } - } - - return NewValue; -} - -/** - Initialize CRC32 table. - -**/ -VOID -RuntimeDriverInitializeCrc32Table ( - VOID - ) -{ - UINTN TableEntry; - UINTN Index; - UINT32 Value; - - for (TableEntry =3D 0; TableEntry < 256; TableEntry++) { - Value =3D ReverseBits ((UINT32) TableEntry); - for (Index =3D 0; Index < 8; Index++) { - if ((Value & 0x80000000) !=3D 0) { - Value =3D (Value << 1) ^ 0x04c11db7; - } else { - Value =3D Value << 1; - } - } - - mCrcTable[TableEntry] =3D ReverseBits (Value); - } -} diff --git a/MdeModulePkg/Core/RuntimeDxe/Runtime.c b/MdeModulePkg/Core/Run= timeDxe/Runtime.c index c61301c..0557457 100644 --- a/MdeModulePkg/Core/RuntimeDxe/Runtime.c +++ b/MdeModulePkg/Core/RuntimeDxe/Runtime.c @@ -401,11 +401,6 @@ RuntimeDriverInitialize ( mMyImageBase =3D MyLoadedImage->ImageBase; =20 // - // Initialize the table used to compute 32-bit CRCs - // - RuntimeDriverInitializeCrc32Table (); - - // // Fill in the entries of the EFI Boot Services and EFI Runtime Services= Tables // gBS->CalculateCrc32 =3D RuntimeDriverCalculateCrc32; diff --git a/MdeModulePkg/Core/RuntimeDxe/Runtime.h b/MdeModulePkg/Core/Run= timeDxe/Runtime.h index f2cee9c..506915e 100644 --- a/MdeModulePkg/Core/RuntimeDxe/Runtime.h +++ b/MdeModulePkg/Core/RuntimeDxe/Runtime.h @@ -104,15 +104,6 @@ RuntimeDriverSetVirtualAddressMap ( ); =20 /** - Initialize CRC32 table. - -**/ -VOID -RuntimeDriverInitializeCrc32Table ( - VOID - ); - -/** Install Runtime AP. This code includes the EfiRuntimeLib, but it only functions at RT in physical mode. =20 diff --git a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32G= uidedSectionExtractLib.c b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtrac= tLib/PeiCrc32GuidedSectionExtractLib.c index f979bdf..34f1e17 100644 --- a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSe= ctionExtractLib.c +++ b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSe= ctionExtractLib.c @@ -3,7 +3,7 @@ This library registers CRC32 guided section handler=20 to parse CRC32 encapsulation section and extract raw data. =20 -Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials =20 are licensed and made available under the terms and conditions of the BSD = License =20 which accompanies this distribution. The full text of the license may be = found at =20 @@ -16,6 +16,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER= EXPRESS OR IMPLIED. =20 #include #include +#include #include #include #include @@ -34,90 +35,6 @@ typedef struct { } CRC32_SECTION2_HEADER; =20 /** - This internal function reverses bits for 32bit data. - - @param Value The data to be reversed. - - @return Data reversed. - -**/ -UINT32 -PeiCrc32GuidedSectionExtractLibReverseBits ( - UINT32 Value - ) -{ - UINTN Index; - UINT32 NewValue; - - NewValue =3D 0; - for (Index =3D 0; Index < 32; Index++) { - if ((Value & (1 << Index)) !=3D 0) { - NewValue =3D NewValue | (1 << (31 - Index)); - } - } - - return NewValue; -} - -/** - Calculate CRC32 for target data. - - @param Data The target data. - @param DataSize The target data size. - @param CrcOut The CRC32 for target data. - - @retval EFI_SUCCESS The CRC32 for target data is calculated su= ccessfully. - @retval EFI_INVALID_PARAMETER Some parameter is not valid, so the CRC32 = is not - calculated. - -**/ -EFI_STATUS -EFIAPI -PeiCrc32GuidedSectionExtractLibCalculateCrc32 ( - IN VOID *Data, - IN UINTN DataSize, - OUT UINT32 *CrcOut - ) -{ - UINT32 CrcTable[256]; - UINTN TableEntry; - UINTN Index; - UINT32 Value; - UINT32 Crc; - UINT8 *Ptr; - - if (Data =3D=3D NULL || DataSize =3D=3D 0 || CrcOut =3D=3D NULL) { - return EFI_INVALID_PARAMETER; - } - =20 - // - // Initialize CRC32 table. - // - for (TableEntry =3D 0; TableEntry < 256; TableEntry++) { - Value =3D PeiCrc32GuidedSectionExtractLibReverseBits ((UINT32) TableEn= try); - for (Index =3D 0; Index < 8; Index++) { - if ((Value & 0x80000000) !=3D 0) { - Value =3D (Value << 1) ^ 0x04c11db7; - } else { - Value =3D Value << 1; - } - } - CrcTable[TableEntry] =3D PeiCrc32GuidedSectionExtractLibReverseBits (V= alue); - } - - // - // Compute CRC - // - Crc =3D 0xffffffff; - for (Index =3D 0, Ptr =3D Data; Index < DataSize; Index++, Ptr++) { - Crc =3D (Crc >> 8) ^ CrcTable[(UINT8) Crc ^ *Ptr]; - } - - *CrcOut =3D Crc ^ 0xffffffff; - return EFI_SUCCESS; -} - -/** =20 GetInfo gets raw data size and attribute of the input guided section. It first checks whether the input guid section is supported.=20 @@ -203,7 +120,6 @@ Crc32GuidedSectionHandler ( OUT UINT32 *AuthenticationStatus ) { - EFI_STATUS Status; UINT32 SectionCrc32Checksum; UINT32 Crc32Checksum; UINT32 OutputBufferSize; @@ -255,26 +171,14 @@ Crc32GuidedSectionHandler ( } =20 // - // Init Checksum value to Zero. - // - Crc32Checksum =3D 0; - - // // Calculate CRC32 Checksum of Image // - Status =3D PeiCrc32GuidedSectionExtractLibCalculateCrc32 (*OutputBuffer,= OutputBufferSize, &Crc32Checksum); - if (Status =3D=3D EFI_SUCCESS) { - if (Crc32Checksum !=3D SectionCrc32Checksum) { - // - // If Crc32 checksum is not matched, AUTH tested failed bit is set. - // - *AuthenticationStatus |=3D EFI_AUTH_STATUS_TEST_FAILED; - } - } else { + Crc32Checksum =3D CalculateCrc32 (*OutputBuffer, OutputBufferSize); + if (Crc32Checksum !=3D SectionCrc32Checksum) { // - // If Crc32 checksum is not calculated, AUTH not tested bit is set. + // If Crc32 checksum is not matched, AUTH tested failed bit is set. // - *AuthenticationStatus |=3D EFI_AUTH_STATUS_NOT_TESTED; + *AuthenticationStatus |=3D EFI_AUTH_STATUS_TEST_FAILED; } =20 // diff --git a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32G= uidedSectionExtractLib.inf b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtr= actLib/PeiCrc32GuidedSectionExtractLib.inf index 7134810..45fd141 100644 --- a/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSe= ctionExtractLib.inf +++ b/MdeModulePkg/Library/PeiCrc32GuidedSectionExtractLib/PeiCrc32GuidedSe= ctionExtractLib.inf @@ -5,7 +5,7 @@ # ExtractGuidedSectionLib service to register CRC32 guided section handler # that parses CRC32 encapsulation section and extracts raw data. # -# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.
# # This program and the accompanying materials # are licensed and made available under the terms and conditions of the B= SD License @@ -43,6 +43,7 @@ ExtractGuidedSectionLib DebugLib BaseMemoryLib + BaseLib =20 [Guids] gEfiCrc32GuidedSectionExtractionGuid ## PRODUCES ## UNDEFINED --=20 2.8.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel