- Don't allocate a buffer if we don't have any neighbors

svn path=/trunk/; revision=43664
This commit is contained in:
Cameron Gutman
2009-10-21 03:49:44 +00:00
parent 9eeae0e826
commit a5f9cb6d11
+14 -7
View File
@@ -113,16 +113,23 @@ TDI_STATUS InfoTdiQueryGetArptableMIB(TDIEntityID ID,
NTSTATUS Status;
ULONG NumNeighbors = NBCopyNeighbors( Interface, NULL );
ULONG MemSize = NumNeighbors * sizeof(IPARP_ENTRY);
PIPARP_ENTRY ArpEntries =
exAllocatePoolWithTag
( NonPagedPool, MemSize, FOURCC('A','R','P','t') );
PIPARP_ENTRY ArpEntries;
if( !ArpEntries ) return STATUS_NO_MEMORY;
NBCopyNeighbors( Interface, ArpEntries );
if (MemSize != 0)
{
ArpEntries = exAllocatePoolWithTag( NonPagedPool, MemSize, FOURCC('A','R','P','t') );
if( !ArpEntries ) return STATUS_NO_MEMORY;
Status = InfoCopyOut( (PVOID)ArpEntries, MemSize, Buffer, BufferSize );
NBCopyNeighbors( Interface, ArpEntries );
exFreePool( ArpEntries );
Status = InfoCopyOut( (PVOID)ArpEntries, MemSize, Buffer, BufferSize );
exFreePool( ArpEntries );
}
else
{
Status = InfoCopyOut(NULL, 0, NULL, BufferSize);
}
return Status;
}