[NTOSKRNL] Properly check for address validity in !poolfind

This commit is contained in:
Pierre Schweitzer 2019-01-06 12:58:14 +01:00
parent 47b48520b5
commit 28193399ee
No known key found for this signature in database
GPG key ID: 7545556C3D585B0B

View file

@ -3163,7 +3163,6 @@ ExpKdbgExtPoolFindPagedPool(
ULONG i = 0;
PPOOL_HEADER Entry;
PVOID BaseVa;
PMMPTE PointerPte;
PMMPDE PointerPde;
KdbpPrint("Searching Paged pool (%p : %p) for Tag: %.4s\n", MmPagedPoolStart, MmPagedPoolEnd, (PCHAR)&Tag);
@ -3192,13 +3191,7 @@ ExpKdbgExtPoolFindPagedPool(
}
/* Check if allocation is valid */
PointerPte = MiAddressToPte(BaseVa);
if ((ULONG_PTR)PointerPte > PTE_TOP)
{
break;
}
if (PointerPte->u.Hard.Valid)
if (MmIsAddressValid(BaseVa))
{
for (Entry = BaseVa;
(ULONG_PTR)Entry + sizeof(POOL_HEADER) < (ULONG_PTR)BaseVa + PAGE_SIZE;
@ -3243,7 +3236,6 @@ ExpKdbgExtPoolFindNonPagedPool(
{
PPOOL_HEADER Entry;
PVOID BaseVa;
PMMPTE PointerPte;
KdbpPrint("Searching NonPaged pool (%p : %p) for Tag: %.4s\n", MmNonPagedPoolStart, MmNonPagedPoolEnd0, (PCHAR)&Tag);
@ -3261,14 +3253,11 @@ ExpKdbgExtPoolFindNonPagedPool(
}
/* Check if allocation is valid */
PointerPte = MiAddressToPte(BaseVa);
if ((ULONG_PTR)PointerPte > PTE_TOP)
if (!MmIsAddressValid(BaseVa))
{
break;
continue;
}
if (PointerPte->u.Hard.Valid)
{
for (Entry = BaseVa;
(ULONG_PTR)Entry + sizeof(POOL_HEADER) < (ULONG_PTR)BaseVa + PAGE_SIZE;
Entry = (PVOID)((ULONG_PTR)Entry + 8))
@ -3297,7 +3286,6 @@ ExpKdbgExtPoolFindNonPagedPool(
}
}
}
}
BOOLEAN
ExpKdbgExtPoolFind(