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