From 383c303c497d5268f62790de46c5c82d20c65bd6 Mon Sep 17 00:00:00 2001 From: qhuang8 Date: Tue, 4 Mar 2008 11:33:13 +0000 Subject: [PATCH] Fix two minor defects: 1. CoreGetMemoryMap() returns unclean data 2. Zero length memory descriptor might be added to the memory map git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4790 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Core/Dxe/Gcd/gcd.c | 3 +++ MdeModulePkg/Core/Dxe/Mem/Page.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/MdeModulePkg/Core/Dxe/Gcd/gcd.c b/MdeModulePkg/Core/Dxe/Gcd/gcd.c index 1d023548d3..3cadab29dc 100644 --- a/MdeModulePkg/Core/Dxe/Gcd/gcd.c +++ b/MdeModulePkg/Core/Dxe/Gcd/gcd.c @@ -2473,6 +2473,9 @@ Returns: if (MemorySpaceMap[Index].ImageHandle == NULL) { BaseAddress = PageAlignAddress (MemorySpaceMap[Index].BaseAddress); Length = PageAlignLength (MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - BaseAddress); + if (Length == 0 || MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length < BaseAddress) { + continue; + } CoreAddMemoryDescriptor ( EfiConventionalMemory, BaseAddress, diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/Page.c index 0ac2aa5c91..97179dec85 100644 --- a/MdeModulePkg/Core/Dxe/Mem/Page.c +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c @@ -1432,7 +1432,7 @@ Returns: // // Build the map // - ZeroMem (MemoryMap, Size); + ZeroMem (MemoryMap, BufferSize); for (Link = gMemoryMap.ForwardLink; Link != &gMemoryMap; Link = Link->ForwardLink) { Entry = CR (Link, MEMORY_MAP, Link, MEMORY_MAP_SIGNATURE); ASSERT (Entry->VirtualStart == 0); -- 2.39.2