]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg: Fix calculation of offset of chassis SKU Number in SmbiosMiscDxe
authorRebecca Cran <rebecca@nuviainc.com>
Wed, 31 Mar 2021 02:16:18 +0000 (20:16 -0600)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 27 Apr 2021 12:46:26 +0000 (12:46 +0000)
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 <rebecca@nuviainc.com>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type03/MiscChassisManufacturerFunction.c

index 344343ed60a5e20d81df9909d50f08a4dc3e665f..66e3e5327fc343aaf5c38021f8d9c4a3aab31a47 100644 (file)
@@ -39,6 +39,7 @@ SMBIOS_MISC_TABLE_FUNCTION(MiscChassisManufacturer)
 {\r
   CHAR8                           *OptionalStrStart;\r
   CHAR8                           *StrStart;\r
+  UINT8                           *SkuNumberField;\r
   UINTN                           RecordLength;\r
   UINTN                           ManuStrLen;\r
   UINTN                           VerStrLen;\r
@@ -117,10 +118,7 @@ SMBIOS_MISC_TABLE_FUNCTION(MiscChassisManufacturer)
   ChaNumStrLen = StrLen (ChassisSkuNumber);\r
 \r
   ContainedElementCount = InputData->ContainedElementCount;\r
-\r
-  if (ContainedElementCount > 1) {\r
-    ExtendLength = (ContainedElementCount - 1) * sizeof (CONTAINED_ELEMENT);\r
-  }\r
+  ExtendLength = ContainedElementCount * sizeof (CONTAINED_ELEMENT);\r
 \r
   //\r
   // Two zeros following the last string.\r
@@ -149,7 +147,11 @@ SMBIOS_MISC_TABLE_FUNCTION(MiscChassisManufacturer)
   (VOID)CopyMem (SmbiosRecord + 1, &ContainedElements, ExtendLength);\r
 \r
   //ChassisSkuNumber\r
-  *((UINT8 *)SmbiosRecord + sizeof (SMBIOS_TABLE_TYPE3) + ExtendLength) = 5;\r
+  SkuNumberField = (UINT8 *)SmbiosRecord +\r
+                   sizeof (SMBIOS_TABLE_TYPE3) -\r
+                   sizeof (CONTAINED_ELEMENT) + ExtendLength;\r
+\r
+  *SkuNumberField = 5;\r
 \r
   OptionalStrStart = (CHAR8 *)((UINT8 *)SmbiosRecord + sizeof (SMBIOS_TABLE_TYPE3) +\r
                                         ExtendLength + 1);\r