diff --git a/dlls/iphlpapi/ifenum.c b/dlls/iphlpapi/ifenum.c index 0a74ef67d3d..36c42fe0b6f 100644 --- a/dlls/iphlpapi/ifenum.c +++ b/dlls/iphlpapi/ifenum.c @@ -234,12 +234,14 @@ InterfaceIndexTable *getNonLoopbackInterfaceIndexTable(void) if (indexes) { struct if_nameindex *p; + DWORD size = sizeof(InterfaceIndexTable); for (p = indexes, numInterfaces = 0; p && p->if_name; p++) if (!isLoopbackInterface(fd, p->if_name)) numInterfaces++; - ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, - sizeof(InterfaceIndexTable) + (numInterfaces - 1) * sizeof(DWORD)); + if (numInterfaces > 1) + size += (numInterfaces - 1) * sizeof(DWORD); + ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, size); if (ret) { for (p = indexes; p && p->if_name; p++) if (!isLoopbackInterface(fd, p->if_name))