mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[NTOS:MM] Fix typo in MiCheckForUserStackOverflow
This commit is contained in:
parent
472787ffea
commit
3ba51dc218
1 changed files with 10 additions and 10 deletions
|
@ -33,7 +33,7 @@ MiCheckForUserStackOverflow(IN PVOID Address,
|
||||||
PETHREAD CurrentThread = PsGetCurrentThread();
|
PETHREAD CurrentThread = PsGetCurrentThread();
|
||||||
PTEB Teb = CurrentThread->Tcb.Teb;
|
PTEB Teb = CurrentThread->Tcb.Teb;
|
||||||
PVOID StackBase, DeallocationStack, NextStackAddress;
|
PVOID StackBase, DeallocationStack, NextStackAddress;
|
||||||
SIZE_T GuranteedSize;
|
SIZE_T GuaranteedSize;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
/* Do we own the address space lock? */
|
/* Do we own the address space lock? */
|
||||||
|
@ -56,15 +56,15 @@ MiCheckForUserStackOverflow(IN PVOID Address,
|
||||||
/* Read the current settings */
|
/* Read the current settings */
|
||||||
StackBase = Teb->NtTib.StackBase;
|
StackBase = Teb->NtTib.StackBase;
|
||||||
DeallocationStack = Teb->DeallocationStack;
|
DeallocationStack = Teb->DeallocationStack;
|
||||||
GuranteedSize = Teb->GuaranteedStackBytes;
|
GuaranteedSize = Teb->GuaranteedStackBytes;
|
||||||
DPRINT("Handling guard page fault with Stacks Addresses 0x%p and 0x%p, guarantee: %lx\n",
|
DPRINT("Handling guard page fault with Stacks Addresses 0x%p and 0x%p, guarantee: %lx\n",
|
||||||
StackBase, DeallocationStack, GuranteedSize);
|
StackBase, DeallocationStack, GuaranteedSize);
|
||||||
|
|
||||||
/* Guarantees make this code harder, for now, assume there aren't any */
|
/* Guarantees make this code harder, for now, assume there aren't any */
|
||||||
ASSERT(GuranteedSize == 0);
|
ASSERT(GuaranteedSize == 0);
|
||||||
|
|
||||||
/* So allocate only the minimum guard page size */
|
/* So allocate only the minimum guard page size */
|
||||||
GuranteedSize = PAGE_SIZE;
|
GuaranteedSize = PAGE_SIZE;
|
||||||
|
|
||||||
/* Does this faulting stack address actually exist in the stack? */
|
/* Does this faulting stack address actually exist in the stack? */
|
||||||
if ((Address >= StackBase) || (Address < DeallocationStack))
|
if ((Address >= StackBase) || (Address < DeallocationStack))
|
||||||
|
@ -76,7 +76,7 @@ MiCheckForUserStackOverflow(IN PVOID Address,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is where the stack will start now */
|
/* This is where the stack will start now */
|
||||||
NextStackAddress = (PVOID)((ULONG_PTR)PAGE_ALIGN(Address) - GuranteedSize);
|
NextStackAddress = (PVOID)((ULONG_PTR)PAGE_ALIGN(Address) - GuaranteedSize);
|
||||||
|
|
||||||
/* Do we have at least one page between here and the end of the stack? */
|
/* Do we have at least one page between here and the end of the stack? */
|
||||||
if (((ULONG_PTR)NextStackAddress - PAGE_SIZE) <= (ULONG_PTR)DeallocationStack)
|
if (((ULONG_PTR)NextStackAddress - PAGE_SIZE) <= (ULONG_PTR)DeallocationStack)
|
||||||
|
@ -85,13 +85,13 @@ MiCheckForUserStackOverflow(IN PVOID Address,
|
||||||
DPRINT1("Close to our death...\n");
|
DPRINT1("Close to our death...\n");
|
||||||
|
|
||||||
/* Calculate the next memory address */
|
/* Calculate the next memory address */
|
||||||
NextStackAddress = (PVOID)((ULONG_PTR)PAGE_ALIGN(DeallocationStack) + GuranteedSize);
|
NextStackAddress = (PVOID)((ULONG_PTR)PAGE_ALIGN(DeallocationStack) + GuaranteedSize);
|
||||||
|
|
||||||
/* Allocate the memory */
|
/* Allocate the memory */
|
||||||
Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
|
Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
|
||||||
&NextStackAddress,
|
&NextStackAddress,
|
||||||
0,
|
0,
|
||||||
&GuranteedSize,
|
&GuaranteedSize,
|
||||||
MEM_COMMIT,
|
MEM_COMMIT,
|
||||||
PAGE_READWRITE);
|
PAGE_READWRITE);
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
|
@ -111,13 +111,13 @@ MiCheckForUserStackOverflow(IN PVOID Address,
|
||||||
ASSERT((PsGetCurrentProcess()->Peb->NtGlobalFlag & FLG_DISABLE_STACK_EXTENSION) == 0);
|
ASSERT((PsGetCurrentProcess()->Peb->NtGlobalFlag & FLG_DISABLE_STACK_EXTENSION) == 0);
|
||||||
|
|
||||||
/* Update the stack limit */
|
/* Update the stack limit */
|
||||||
Teb->NtTib.StackLimit = (PVOID)((ULONG_PTR)NextStackAddress + GuranteedSize);
|
Teb->NtTib.StackLimit = (PVOID)((ULONG_PTR)NextStackAddress + GuaranteedSize);
|
||||||
|
|
||||||
/* Now move the guard page to the next page */
|
/* Now move the guard page to the next page */
|
||||||
Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
|
Status = ZwAllocateVirtualMemory(NtCurrentProcess(),
|
||||||
&NextStackAddress,
|
&NextStackAddress,
|
||||||
0,
|
0,
|
||||||
&GuranteedSize,
|
&GuaranteedSize,
|
||||||
MEM_COMMIT,
|
MEM_COMMIT,
|
||||||
PAGE_READWRITE | PAGE_GUARD);
|
PAGE_READWRITE | PAGE_GUARD);
|
||||||
if ((NT_SUCCESS(Status) || (Status == STATUS_ALREADY_COMMITTED)))
|
if ((NT_SUCCESS(Status) || (Status == STATUS_ALREADY_COMMITTED)))
|
||||||
|
|
Loading…
Reference in a new issue