- 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:
Stefan Ginsberg 2008-09-24 19:13:08 +00:00
parent a9d6e4341e
commit ef2bb65235

View file

@ -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;
}