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);