iphlapi: Fix some leaks (coverity) (try 2)

Frédéric Delanoy frederic.delanoy at gmail.com
Wed Nov 7 03:36:46 CST 2012


CIDs 713493-713494

try 2: on error, free memory in getIPAddrTable instead of forcing callers to do so
---
 dlls/iphlpapi/ifenum.c        | 4 ++++
 dlls/iphlpapi/iphlpapi_main.c | 1 +
 2 files changed, 5 insertions(+)

diff --git a/dlls/iphlpapi/ifenum.c b/dlls/iphlpapi/ifenum.c
index 4f76d87..aff88cd 100644
--- a/dlls/iphlpapi/ifenum.c
+++ b/dlls/iphlpapi/ifenum.c
@@ -741,6 +741,8 @@ DWORD getIPAddrTable(PMIB_IPADDRTABLE *ppIpAddrTable, HANDLE heap, DWORD flags)
            ifp->ifa_addr);
           i++;
         }
+        if (ret)
+          HeapFree(GetProcessHeap(), 0, *ppIpAddrTable);
       }
       else
         ret = ERROR_OUTOFMEMORY;
@@ -928,6 +930,8 @@ DWORD getIPAddrTable(PMIB_IPADDRTABLE *ppIpAddrTable, HANDLE heap, DWORD flags)
            &ifr->ifr_addr);
           i++;
         }
+        if (ret)
+          HeapFree(GetProcessHeap(), 0, *ppIpAddrTable);
       }
       else
         ret = ERROR_OUTOFMEMORY;
diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c
index dae779c..16f138c 100644
--- a/dlls/iphlpapi/iphlpapi_main.c
+++ b/dlls/iphlpapi/iphlpapi_main.c
@@ -784,6 +784,7 @@ static ULONG adapterAddressesFromIndex(ULONG family, ULONG flags, IF_INDEX index
     }
     if (ret)
     {
+        HeapFree(GetProcessHeap(), 0, v4addrs);
         HeapFree(GetProcessHeap(), 0, routeTable);
         return ret;
     }
-- 
1.8.0




More information about the wine-patches mailing list