- Don't allocate a buffer if we don't have any neighbors
authorCameron Gutman <aicommander@gmail.com>
Wed, 21 Oct 2009 03:49:44 +0000 (03:49 +0000)
committerCameron Gutman <aicommander@gmail.com>
Wed, 21 Oct 2009 03:49:44 +0000 (03:49 +0000)
svn path=/trunk/; revision=43664

reactos/drivers/network/tcpip/tcpip/iinfo.c

index f16e1e2..38e649f 100644 (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;
 }