소스 검색

fix ifconfig buffer check (#777)

KivinChiu 1 개월 전
부모
커밋
9d971dcab1
1개의 변경된 파일6개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 1
      cpputil/ifconfig.cpp

+ 6 - 1
cpputil/ifconfig.cpp

@@ -97,13 +97,18 @@ int ifconfig(std::vector<ifconfig_t>& 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;