https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9b1e056e8f222279fe2eb1...
commit 9b1e056e8f222279fe2eb1d7e2d9948365f2c68d Author: Serge Gautherie 32623169+SergeGautherie@users.noreply.github.com AuthorDate: Wed Oct 11 13:20:15 2017 +0200
[FREELDR] Discard empty entries in PcMemGetBiosMemoryMap. CORE-13332
Improve a TRACE() from f588de2e79e67fc7878e71dccb4ea67debdacf5e. --- boot/freeldr/freeldr/arch/i386/pcmem.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/boot/freeldr/freeldr/arch/i386/pcmem.c b/boot/freeldr/freeldr/arch/i386/pcmem.c index 61cd694070..2c615914f1 100644 --- a/boot/freeldr/freeldr/arch/i386/pcmem.c +++ b/boot/freeldr/freeldr/arch/i386/pcmem.c @@ -286,6 +286,13 @@ PcMemGetBiosMemoryMap(PFREELDR_MEMORY_DESCRIPTOR MemoryMap, ULONG MaxMemoryMapSi break; }
+ if (Regs.x.ecx == 0) + { + TRACE("Discard empty entry. (would-be-PcBiosMapCount = %lu)\n", + PcBiosMapCount); + goto nextRange; + } + /* Copy data to global buffer */ RtlCopyMemory(&PcBiosMemoryMap[PcBiosMapCount], (PVOID)BIOSCALLBUFFER, Regs.x.ecx);
@@ -295,6 +302,13 @@ PcMemGetBiosMemoryMap(PFREELDR_MEMORY_DESCRIPTOR MemoryMap, ULONG MaxMemoryMapSi TRACE("Reserved: 0x%lx\n", PcBiosMemoryMap[PcBiosMapCount].Reserved); TRACE("\n");
+ if (PcBiosMemoryMap[PcBiosMapCount].Length == 0) + { + TRACE("Discard empty range. (would-be-PcBiosMapCount = %lu, BaseAddress = %lu, Length = 0)\n", + PcBiosMapCount, PcBiosMemoryMap[PcBiosMapCount].BaseAddress); + goto nextRange; + } + /* Check if this is free memory */ if (PcBiosMemoryMap[PcBiosMapCount].Type == BiosMemoryUsable) { @@ -314,7 +328,7 @@ PcMemGetBiosMemoryMap(PFREELDR_MEMORY_DESCRIPTOR MemoryMap, ULONG MaxMemoryMapSi if (EndAddress <= RealBaseAddress) { /* This doesn't span any page, so continue with next range */ - TRACE("Skipping aligned range < PAGE_SIZE. (PcBiosMapCount = %lu, BaseAddress = %lu, Length = %lu)\n", + TRACE("Skipping aligned range < PAGE_SIZE. (would-be-PcBiosMapCount = %lu, BaseAddress = %lu, Length = %lu)\n", PcBiosMapCount, PcBiosMemoryMap[PcBiosMapCount].BaseAddress, PcBiosMemoryMap[PcBiosMapCount].Length);