From nobody Sat Nov 2 14:36:40 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.zoho.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 1484031310675625.2989223941283; Mon, 9 Jan 2017 22:55:10 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 0956C81B3A; Mon, 9 Jan 2017 22:55:09 -0800 (PST) Received: from g2t2354.austin.hpe.com (g2t2354.austin.hpe.com [15.233.44.27]) (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 8248C81B39 for ; Mon, 9 Jan 2017 22:55:07 -0800 (PST) Received: from AIA2PHNNRN.local (unknown [16.214.90.9]) by g2t2354.austin.hpe.com (Postfix) with SMTP id 1754E4E; Tue, 10 Jan 2017 06:55:07 +0000 (UTC) X-Original-To: edk2-devel@lists.01.org Date: Tue, 10 Jan 2017 00:55:07 -0600 From: Chris Phillips To: edk2-devel@lists.01.org; Message-ID: <07736531-4229-420c-9676-99c2a5e59e5f@AIA2PHNNRN.local> X-Mailer: TortoiseGit MIME-Version: 1.0 Subject: [edk2] [PATCH] Nt32Pkg: Fix code to correctly set SMBIOS Type 2 Length X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ruiyu.ni@intel.com Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 X-Zoho-Virus-Status: 2 X-ZM-MESSAGEID: 226431000000901265 Content-Type: text/plain; charset="utf-8" When running Nt32Pkg, SMBIOS Type 2 had the wrong Length. Fixed the code to use the correct structure in sizeof, and properly account= for ContainedObjectHandles. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Chris Phillips --- .../MiscBaseBoardManufacturerFunction.c | 16 +++++++++++-= ---- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Nt32Pkg/MiscSubClassPlatformDxe/MiscBaseBoardManufacturerFunct= ion.c b/Nt32Pkg/MiscSubClassPlatformDxe/MiscBaseBoardManufacturerFunction.c index 303726c3fd..26d5d11da6 100644 --- a/Nt32Pkg/MiscSubClassPlatformDxe/MiscBaseBoardManufacturerFunction.c +++ b/Nt32Pkg/MiscSubClassPlatformDxe/MiscBaseBoardManufacturerFunction.c @@ -3,6 +3,7 @@ SMBIOS type 2. =20 Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
+(C) Copyright 2017 Hewlett Packard Enterprise Development LP
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 @@ -101,11 +102,16 @@ MISC_SMBIOS_TABLE_FUNCTION(MiscBaseBoardManufacturer) // // Two zeros following the last string. // - SmbiosRecord =3D AllocatePool(sizeof (SMBIOS_TABLE_TYPE3) + ManuStrLen += 1 + ProductStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + AssertTagStr= Len + 1 + ChassisStrLen +1 + 1); - ZeroMem(SmbiosRecord, sizeof (SMBIOS_TABLE_TYPE3) + ManuStrLen + 1 + Pro= ductStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + AssertTagStrLen + 1 = + ChassisStrLen +1 + 1); + // Since we fill NumberOfContainedObjectHandles =3D 0, remove sizeof (UI= NT16) bytes for ContainedObjectHandles[1] + // + SmbiosRecord =3D AllocatePool(sizeof (SMBIOS_TABLE_TYPE2) - sizeof (UINT= 16) + ManuStrLen + 1 + ProductStrLen + 1 + VerStrLen + 1 + SerialNumStrLen = + 1 + AssertTagStrLen + 1 + ChassisStrLen + 1 + 1); + ZeroMem(SmbiosRecord, sizeof (SMBIOS_TABLE_TYPE2) - sizeof (UINT16) + Ma= nuStrLen + 1 + ProductStrLen + 1 + VerStrLen + 1 + SerialNumStrLen + 1 + As= sertTagStrLen + 1 + ChassisStrLen + 1 + 1); =20 SmbiosRecord->Hdr.Type =3D EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION; - SmbiosRecord->Hdr.Length =3D sizeof (SMBIOS_TABLE_TYPE2); + // + // Since we fill NumberOfContainedObjectHandles =3D 0, remove sizeof (UI= NT16) bytes for ContainedObjectHandles[1] + // + SmbiosRecord->Hdr.Length =3D sizeof (SMBIOS_TABLE_TYPE2) - sizeof (UINT1= 6); // // Make handle chosen by smbios protocol.add automatically. // @@ -142,9 +148,9 @@ MISC_SMBIOS_TABLE_FUNCTION(MiscBaseBoardManufacturer) =20 OptionalStrStart =3D (CHAR8 *)(SmbiosRecord + 1); // - // Since we fill NumberOfContainedObjectHandles =3D 0 for simple, just a= fter this filed to fill string + // Since we fill NumberOfContainedObjectHandles =3D 0, just after this f= ield to fill string // - OptionalStrStart -=3D 2; + OptionalStrStart -=3D sizeof (UINT16); UnicodeStrToAsciiStr(Manufacturer, OptionalStrStart); UnicodeStrToAsciiStr(Product, OptionalStrStart + ManuStrLen + 1); UnicodeStrToAsciiStr(Version, OptionalStrStart + ManuStrLen + 1 + Produc= tStrLen + 1); --=20 2.11.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel