mirror of
https://github.com/reactos/reactos.git
synced 2024-09-30 14:37:45 +00:00
- MiQueryVirtualMemory shouldn't be called for kernel memory, so remove the special case code for a kernel address space. Also fixes a case where we would dereference an uninitialized pointer.
- Fix for Coverity Error CID: 773 svn path=/trunk/; revision=36494
This commit is contained in:
parent
a9d6e4341e
commit
ef2bb65235
|
@ -427,26 +427,21 @@ MiQueryVirtualMemory(IN HANDLE ProcessHandle,
|
|||
MEMORY_AREA* MemoryArea;
|
||||
PMM_AVL_TABLE AddressSpace;
|
||||
|
||||
if (Address < MmSystemRangeStart)
|
||||
{
|
||||
Status = ObReferenceObjectByHandle(ProcessHandle,
|
||||
PROCESS_QUERY_INFORMATION,
|
||||
NULL,
|
||||
UserMode,
|
||||
(PVOID*)(&Process),
|
||||
NULL);
|
||||
Status = ObReferenceObjectByHandle(ProcessHandle,
|
||||
PROCESS_QUERY_INFORMATION,
|
||||
NULL,
|
||||
UserMode,
|
||||
(PVOID*)(&Process),
|
||||
NULL);
|
||||
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT("NtQueryVirtualMemory() = %x\n",Status);
|
||||
return(Status);
|
||||
}
|
||||
AddressSpace = &Process->VadRoot;
|
||||
}
|
||||
else
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
AddressSpace = MmGetKernelAddressSpace();
|
||||
DPRINT("NtQueryVirtualMemory() = %x\n",Status);
|
||||
return(Status);
|
||||
}
|
||||
|
||||
AddressSpace = &Process->VadRoot;
|
||||
|
||||
MmLockAddressSpace(AddressSpace);
|
||||
MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, Address);
|
||||
switch(VirtualMemoryInformationClass)
|
||||
|
@ -572,11 +567,7 @@ MiQueryVirtualMemory(IN HANDLE ProcessHandle,
|
|||
}
|
||||
|
||||
MmUnlockAddressSpace(AddressSpace);
|
||||
if (Address < MmSystemRangeStart)
|
||||
{
|
||||
ASSERT(Process);
|
||||
ObDereferenceObject(Process);
|
||||
}
|
||||
ObDereferenceObject(Process);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue