summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2011-04-19 02:50:16 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2011-04-19 02:50:16 +0000
commit93dd5b7a5a4aaea69505cad2079f60f3abfda74a (patch)
tree30b09f1794083d828476519982a2b5a7f33dfe70
parentf0ba31532bd0b027fb19f2d683232fbdde9c85cf (diff)
downloadedk2-93dd5b7a5a4aaea69505cad2079f60f3abfda74a.zip
edk2-93dd5b7a5a4aaea69505cad2079f60f3abfda74a.tar.gz
edk2-93dd5b7a5a4aaea69505cad2079f60f3abfda74a.tar.bz2
sync patch r10783, r10787 from main trunk.
Add security check to make code run safe. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/branches/UDK2010@11557 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--UefiCpuPkg/CpuDxe/CpuDxe.c2
-rw-r--r--UefiCpuPkg/CpuDxe/CpuGdt.c2
-rw-r--r--UefiCpuPkg/Library/MtrrLib/MtrrLib.c7
3 files changed, 8 insertions, 3 deletions
diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.c b/UefiCpuPkg/CpuDxe/CpuDxe.c
index 8d13dc1..a844bb9 100644
--- a/UefiCpuPkg/CpuDxe/CpuDxe.c
+++ b/UefiCpuPkg/CpuDxe/CpuDxe.c
@@ -1062,7 +1062,7 @@ InitInterruptDescriptorTable (
IdtPtrAlignmentBuffer = AllocatePool (sizeof (*IdtPtr) + 16);
IdtPtr = ALIGN_POINTER (IdtPtrAlignmentBuffer, 16);
IdtPtr->Base = (UINT32)(((UINTN)(VOID*) gIdtTable) & (BASE_4GB-1));
- IdtPtr->Limit = sizeof (gIdtTable) - 1;
+ IdtPtr->Limit = (UINT16) (sizeof (gIdtTable) - 1);
AsmWriteIdtr (IdtPtr);
diff --git a/UefiCpuPkg/CpuDxe/CpuGdt.c b/UefiCpuPkg/CpuDxe/CpuGdt.c
index b6d8ffb..e22b80a 100644
--- a/UefiCpuPkg/CpuDxe/CpuGdt.c
+++ b/UefiCpuPkg/CpuDxe/CpuGdt.c
@@ -188,7 +188,7 @@ InitGlobalDescriptorTable (
// Write GDT register
//
gdtPtr.Base = (UINT32)(UINTN)(VOID*) gdt;
- gdtPtr.Limit = sizeof (GdtTemplate) - 1;
+ gdtPtr.Limit = (UINT16) (sizeof (GdtTemplate) - 1);
AsmWriteGdtr (&gdtPtr);
//
diff --git a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
index dab0535..14f7a0a 100644
--- a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
+++ b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
@@ -93,11 +93,16 @@ GetVariableMtrrCount (
VOID
)
{
+ UINT32 VariableMtrrCount;
+
if (!IsMtrrSupported ()) {
return 0;
}
- return (UINT32)(AsmReadMsr64 (MTRR_LIB_IA32_MTRR_CAP) & MTRR_LIB_IA32_MTRR_CAP_VCNT_MASK);
+ VariableMtrrCount = (UINT32)(AsmReadMsr64 (MTRR_LIB_IA32_MTRR_CAP) & MTRR_LIB_IA32_MTRR_CAP_VCNT_MASK);
+ ASSERT (VariableMtrrCount <= MTRR_NUMBER_OF_VARIABLE_MTRR);
+
+ return VariableMtrrCount;
}
/**