diff --git a/cpputil/ifconfig.cpp b/cpputil/ifconfig.cpp index 9af361806..cfdc8924e 100644 --- a/cpputil/ifconfig.cpp +++ b/cpputil/ifconfig.cpp @@ -97,13 +97,18 @@ int ifconfig(std::vector& ifcs) { PIP_ADAPTER_ADDRESSES pAddrs = NULL; ULONG buflen = 0; GetAdaptersAddresses(AF_INET, 0, NULL, pAddrs, &buflen); + if (buflen <= 0) return -20; pAddrs = (PIP_ADAPTER_ADDRESSES)malloc(buflen); GetAdaptersAddresses(AF_INET, 0, NULL, pAddrs, &buflen); PIP_ADAPTER_INFO pInfos = NULL; buflen = 0; GetAdaptersInfo(pInfos, &buflen); - pInfos = (PIP_ADAPTER_INFO)malloc(buflen); + if (buflen <= 0) { + free(pAddrs); + return -20; + } + pInfos = (PIP_ADAPTER_INFO)malloc(buflen); GetAdaptersInfo(pInfos, &buflen); ifconfig_t ifc;