diff options
author | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-04-19 02:50:16 +0000 |
---|---|---|
committer | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-04-19 02:50:16 +0000 |
commit | 93dd5b7a5a4aaea69505cad2079f60f3abfda74a (patch) | |
tree | 30b09f1794083d828476519982a2b5a7f33dfe70 | |
parent | f0ba31532bd0b027fb19f2d683232fbdde9c85cf (diff) | |
download | edk2-93dd5b7a5a4aaea69505cad2079f60f3abfda74a.tar.gz |
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.c | 2 | ||||
-rw-r--r-- | UefiCpuPkg/CpuDxe/CpuGdt.c | 2 | ||||
-rw-r--r-- | 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;
}
/**
|