https://bugzilla.tianocore.org/show_bug.cgi?id=1970

Update local variable in ParseAcpiSlot() to be UINT32
instead of UINT64 to avoid 64-bit multiply operation
in the SLIT_ELEMENT() macro.

If LocalityCount is >= MAX_UINT32 and then skip the
validation check and print an INFO message instead.

Cc: Jaben Carsey <jaben.car...@intel.com>
Cc: Ray Ni <ray...@intel.com>
Cc: Zhichao Gao <zhichao....@intel.com>
Cc: Sami Mujawar <sami.muja...@arm.com>
Signed-off-by: Michael D Kinney <michael.d.kin...@intel.com>
---
 .../Parsers/Slit/SlitParser.c                            | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git 
a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c 
b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c
index 1f9dac66ee..6913ad8b31 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Slit/SlitParser.c
@@ -57,8 +57,8 @@ ParseAcpiSlit (
   )
 {
   UINT32 Offset;
-  UINT64 Count;
-  UINT64 Index;
+  UINT32 Count;
+  UINT32 Index;
   UINT64 LocalityCount;
   UINT8* LocalityPtr;
   CHAR16 Buffer[80];  // Used for AsciiName param of ParseAcpi
@@ -105,6 +105,11 @@ ParseAcpiSlit (
     }
   }
 
+  if  (LocalityCount >= MAX_UINT32) {
+    Print (L"INFO: Skipping validation of System Localities as locality count 
is >= MAX_UINT32\n");
+    return;
+  }
+
   // Validate
   for (Count = 0; Count < LocalityCount; Count++) {
     for (Index = 0; Index < LocalityCount; Index++) {
-- 
2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#44808): https://edk2.groups.io/g/devel/message/44808
Mute This Topic: https://groups.io/mt/32683877/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to