[edk2-devel] [PATCH 4/5] ArmPkg: Fix calculation of offset of chassis SKU Number in SmbiosMiscDxe

Rebecca Cran posted 5 patches 4 years, 10 months ago
[edk2-devel] [PATCH 4/5] ArmPkg: Fix calculation of offset of chassis SKU Number in SmbiosMiscDxe
Posted by Rebecca Cran 4 years, 10 months ago
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>
---
 ArmPkg/Universal/Smbios/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 344343ed60a5..66e3e5327fc3 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);
-- 
2.26.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73567): https://edk2.groups.io/g/devel/message/73567
Mute This Topic: https://groups.io/mt/81741557/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-