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
if (MemorySpaceMap[Index].ImageHandle == NULL) {\r
BaseAddress = PageAlignAddress (MemorySpaceMap[Index].BaseAddress);\r
Length = PageAlignLength (MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - BaseAddress);\r
+ if (Length == 0 || MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length < BaseAddress) {\r
+ continue;\r
+ }\r
CoreAddMemoryDescriptor (\r
EfiConventionalMemory,\r
BaseAddress,\r
//\r
// Build the map\r
//\r
- ZeroMem (MemoryMap, Size);\r
+ ZeroMem (MemoryMap, BufferSize);\r
for (Link = gMemoryMap.ForwardLink; Link != &gMemoryMap; Link = Link->ForwardLink) {\r
Entry = CR (Link, MEMORY_MAP, Link, MEMORY_MAP_SIGNATURE);\r
ASSERT (Entry->VirtualStart == 0);\r