diff --git a/dlls/iphlpapi/ifenum.c b/dlls/iphlpapi/ifenum.c index 4f76d87bf26..aff88cd059e 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 dae779c4785..16f138c18bf 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; }