From 13f32d4a642e8af489e75e4446a76de1bb30b011 Mon Sep 17 00:00:00 2001 From: Rebecca Cran Date: Tue, 30 Mar 2021 20:16:18 -0600 Subject: ArmPkg: Fix calculation of offset of chassis SKU Number in SmbiosMiscDxe The calculation of the chassis SKU number field was being calculated incorrectly, forgetting that there's one element already present in the structure. Fix the calculation and improve code readability by introducing a SkuNumberField variable. Signed-off-by: Rebecca Cran Reviewed-by: Leif Lindholm --- .../SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c index 344343ed60..66e3e5327f 100644 --- a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c @@ -39,6 +39,7 @@ SMBIOS_MISC_TABLE_FUNCTION(MiscChassisManufacturer) { CHAR8 *OptionalStrStart; CHAR8 *StrStart; + UINT8 *SkuNumberField; UINTN RecordLength; UINTN ManuStrLen; UINTN VerStrLen; @@ -117,10 +118,7 @@ SMBIOS_MISC_TABLE_FUNCTION(MiscChassisManufacturer) ChaNumStrLen = StrLen (ChassisSkuNumber); ContainedElementCount = InputData->ContainedElementCount; - - if (ContainedElementCount > 1) { - ExtendLength = (ContainedElementCount - 1) * sizeof (CONTAINED_ELEMENT); - } + ExtendLength = ContainedElementCount * sizeof (CONTAINED_ELEMENT); // // Two zeros following the last string. @@ -149,7 +147,11 @@ SMBIOS_MISC_TABLE_FUNCTION(MiscChassisManufacturer) (VOID)CopyMem (SmbiosRecord + 1, &ContainedElements, ExtendLength); //ChassisSkuNumber - *((UINT8 *)SmbiosRecord + sizeof (SMBIOS_TABLE_TYPE3) + ExtendLength) = 5; + SkuNumberField = (UINT8 *)SmbiosRecord + + sizeof (SMBIOS_TABLE_TYPE3) - + sizeof (CONTAINED_ELEMENT) + ExtendLength; + + *SkuNumberField = 5; OptionalStrStart = (CHAR8 *)((UINT8 *)SmbiosRecord + sizeof (SMBIOS_TABLE_TYPE3) + ExtendLength + 1); -- cgit v1.2.3