summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c
diff options
context:
space:
mode:
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>2006-05-25 10:13:26 +0000
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>2006-05-25 10:13:26 +0000
commita3657e3e7aaaccb1b9ea1b41a72d4564452e272d (patch)
tree24272aceeed6a863f6c18f331386042770d51bcb /MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c
parentd05003bed6b96ad51fbf5d9b7b6c2897e6228245 (diff)
downloadedk2-a3657e3e7aaaccb1b9ea1b41a72d4564452e272d.tar.gz
edk2-a3657e3e7aaaccb1b9ea1b41a72d4564452e272d.tar.bz2
edk2-a3657e3e7aaaccb1b9ea1b41a72d4564452e272d.zip
MemoryAllocationLib: For boundary case: “AllocationSize + OverAllocationSize >= 4G”
DxeMemoryAllocationLib: Change the behavior from returning NULL to ASSERT () PeiMemoryAllocationLib: Add ASSERT () I also add ASSERT () in Pei Service AllocatePool () to catch if allocation size > 64K DebugLib: Header file (DebugLib.h): Fix an issue in ASSERT_PROTOCOL_ALREADY_INSTALLED(Handle, Guid). In contrast with LocateProtocol (), the first & second parameter type of HandleProtocol () is EFI_HANDLE & EFI_GUID respectively. UefiLib: For UnicodeStringDisplayLength (CONST CHAR8 *String), return 0 if String is NULL. BasePrintLib: Add missing “EFIAPI” to UnicodeValueToString() and AsciiValueToString() and move their definitions from PrintLibInternal.c to PrintLib.c. Fix the comments error(Maximum Length TIME”) git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@275 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c')
-rw-r--r--MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c b/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c
index 63641569ff..274287cf03 100644
--- a/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c
+++ b/MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c
@@ -158,6 +158,10 @@ InternalAllocateAlignedPages (
return NULL;
}
//
+ // Make sure that Pages plus EFI_SIZE_TO_PAGES (Alignment) does not overflow.
+ //
+ ASSERT (Pages <= (MAX_ADDRESS - EFI_SIZE_TO_PAGES (Alignment)));
+ //
// We would rather waste some memory to save PEI code size.
//
Memory = InternalAllocatePages (MemoryType, Pages + EFI_SIZE_TO_PAGES (Alignment));
@@ -569,6 +573,10 @@ InternalAllocateAlignedPool (
} else {
AlignmentMask = Alignment - 1;
}
+ //
+ // Make sure that AllocationSize plus AlignmentMask does not overflow.
+ //
+ ASSERT (AllocationSize <= (MAX_ADDRESS - AlignmentMask));
RawAddress = InternalAllocatePool (PoolType, AllocationSize + AlignmentMask);
@@ -609,6 +617,11 @@ AllocateAlignedPool (
AlignmentMask = Alignment - 1;
}
+ //
+ // Make sure that AllocationSize plus AlignmentMask does not overflow.
+ //
+ ASSERT (AllocationSize <= (MAX_ADDRESS - AlignmentMask));
+
RawAddress = AllocatePool (AllocationSize + AlignmentMask);
AlignedAddress = ((UINTN) RawAddress + AlignmentMask) & ~AlignmentMask;