From 93dd5b7a5a4aaea69505cad2079f60f3abfda74a Mon Sep 17 00:00:00 2001 From: vanjeff Date: Tue, 19 Apr 2011 02:50:16 +0000 Subject: 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 --- UefiCpuPkg/CpuDxe/CpuDxe.c | 2 +- UefiCpuPkg/CpuDxe/CpuGdt.c | 2 +- UefiCpuPkg/Library/MtrrLib/MtrrLib.c | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.c b/UefiCpuPkg/CpuDxe/CpuDxe.c index 8d13dc13e9..a844bb9dd4 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 b6d8ffb75d..e22b80a64f 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 dab0535fe9..14f7a0ad7e 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; } /** -- cgit