summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg/PiSmmCpuDxeSmm/X64
diff options
context:
space:
mode:
authorMarvin H?user <Marvin.Haeuser@outlook.com>2018-10-28 16:51:23 +0800
committerEric Dong <eric.dong@intel.com>2018-10-30 10:21:33 +0800
commit4222e8e7e421e9c8d2c2f319a3860dd3332d6255 (patch)
tree4a08836cb7d337adb83e0517441231d5ed30cae0 /UefiCpuPkg/PiSmmCpuDxeSmm/X64
parent37fba7c2762e114a280e3b361b53ded034aac7e3 (diff)
downloadedk2-4222e8e7e421e9c8d2c2f319a3860dd3332d6255.tar.gz
edk2-4222e8e7e421e9c8d2c2f319a3860dd3332d6255.tar.bz2
edk2-4222e8e7e421e9c8d2c2f319a3860dd3332d6255.zip
UefiCpuPkg/PiSmmCpuDxeSmm: Fix ASSERT for success.
Index is initialized to MAX_UINT16 as default failure value, which is what the ASSERT is supposed to test for. The ASSERT condition however can never return FALSE for INT16 != int, as due to Integer Promotion[1], Index is converted to int, which can never result in -1. Furthermore, Index is used as a for loop index variable inbetween its initialization and the ASSERT, so the value is unconditionally overwritten too. Fix the ASSERT check to compare Index to its upper boundary, which it will be equal to if the loop was not broken out of on success. [1] ISO/IEC 9899:2011, 6.5.9.4 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Marvin Haeuser <Marvin.Haeuser@outlook.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
Diffstat (limited to 'UefiCpuPkg/PiSmmCpuDxeSmm/X64')
-rw-r--r--UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
index b7c3ad31e8..89b3f2b725 100644
--- a/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
+++ b/UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
@@ -110,7 +110,6 @@ GetProtectedModeCS (
UINTN GdtEntryCount;
UINT16 Index;
- Index = (UINT16) -1;
AsmReadGdtr (&GdtrDesc);
GdtEntryCount = (GdtrDesc.Limit + 1) / sizeof (IA32_SEGMENT_DESCRIPTOR);
GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;
@@ -122,7 +121,7 @@ GetProtectedModeCS (
}
GdtEntry++;
}
- ASSERT (Index != -1);
+ ASSERT (Index != GdtEntryCount);
return Index * 8;
}