[IPHLPAPI] Fix memory leak in getNumRoutes. CORE-14353
[reactos.git] / dll / win32 / iphlpapi / ipstats_reactos.c
index 4f732f5..2b981c1 100644 (file)
@@ -366,7 +366,7 @@ DWORD getNumRoutes(void)
 
     TRACE("called.\n");
 
-    status = openTcpFile( &tcpFile );
+    status = openTcpFile( &tcpFile, FILE_READ_DATA );
 
     if( !NT_SUCCESS(status) ) {
         TRACE("failure: %08x\n", (int)status );
@@ -397,6 +397,7 @@ DWORD getNumRoutes(void)
 
     TRACE("numRoutes: %d\n", (int)numRoutes);
 
+    tdiFreeThingSet( entitySet );
     closeTcpFile( tcpFile );
 
     return numRoutes;
@@ -421,7 +422,7 @@ RouteTable *getRouteTable(void)
     DWORD numRoutes = getNumRoutes(), routesAdded = 0;
     TDIEntityID ent;
     HANDLE tcpFile;
-    NTSTATUS status = openTcpFile( &tcpFile );
+    NTSTATUS status = openTcpFile( &tcpFile, FILE_READ_DATA );
     int i;
 
     if( !NT_SUCCESS(status) )
@@ -498,7 +499,7 @@ DWORD getNumArpEntries(void)
 
     TRACE("called.\n");
 
-    status = openTcpFile( &tcpFile );
+    status = openTcpFile( &tcpFile, FILE_READ_DATA );
 
     if( !NT_SUCCESS(status) ) {
         TRACE("failure: %08x\n", (int)status );
@@ -550,7 +551,7 @@ PMIB_IPNETTABLE getArpTable(void)
 
     totalNumber = getNumArpEntries();
 
-    status = openTcpFile( &tcpFile );
+    status = openTcpFile( &tcpFile, FILE_READ_DATA );
 
     if( !NT_SUCCESS(status) ) {
         TRACE("failure: %08x\n", (int)status );
@@ -582,13 +583,12 @@ PMIB_IPNETTABLE getArpTable(void)
                                        (PVOID *)&AdapterArpTable,
                                        &returnSize );
 
-           if( status == STATUS_SUCCESS ) {
-               for( TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++ )
-                   IpArpTable->table[CurrIdx] = AdapterArpTable[TmpIdx];
-           }
-
-           if( AdapterArpTable ) tdiFreeThingSet( AdapterArpTable );
-       }
+            if( status == STATUS_SUCCESS ) {
+                for( TmpIdx = 0; TmpIdx < returnSize; TmpIdx++, CurrIdx++ )
+                    IpArpTable->table[CurrIdx] = AdapterArpTable[TmpIdx];
+                tdiFreeThingSet( AdapterArpTable );
+            }
+        }
     }
 
     closeTcpFile( tcpFile );