diff --git a/reactos/base/applications/network/ipconfig/ipconfig.c b/reactos/base/applications/network/ipconfig/ipconfig.c index a44fcc2a4f9..6a3f3c92733 100644 --- a/reactos/base/applications/network/ipconfig/ipconfig.c +++ b/reactos/base/applications/network/ipconfig/ipconfig.c @@ -360,15 +360,18 @@ VOID ShowInfo(BOOL bAll) ULONG adaptOutBufLen = 0; PFIXED_INFO pFixedInfo = NULL; ULONG netOutBufLen = 0; + ULONG ret = 0; /* call GetAdaptersInfo to obtain the adapter info */ - if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) == ERROR_BUFFER_OVERFLOW) + ret = GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen); + if (ret == ERROR_BUFFER_OVERFLOW) { pAdapterInfo = (IP_ADAPTER_INFO *)HeapAlloc(ProcessHeap, 0, adaptOutBufLen); if (pAdapterInfo == NULL) return; - if (GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen) != NO_ERROR) + ret = GetAdaptersInfo(pAdapterInfo, &adaptOutBufLen); + if (ret != NO_ERROR) { DoFormatMessage(0); HeapFree(ProcessHeap, 0, pAdapterInfo); @@ -377,8 +380,11 @@ VOID ShowInfo(BOOL bAll) } else { - DoFormatMessage(0); - return; + if( ERROR_NO_DATA != ret ) + { + DoFormatMessage(0); + return; + } } /* call GetNetworkParams to obtain the network info */ @@ -386,17 +392,24 @@ VOID ShowInfo(BOOL bAll) { pFixedInfo = (FIXED_INFO *)HeapAlloc(ProcessHeap, 0, netOutBufLen); if (pFixedInfo == NULL) + { + if (pAdapterInfo) + HeapFree(ProcessHeap, 0, pAdapterInfo); return; if (GetNetworkParams(pFixedInfo, &netOutBufLen) != NO_ERROR) { DoFormatMessage(0); + if (pAdapterInfo) + HeapFree(ProcessHeap, 0, pAdapterInfo); HeapFree(ProcessHeap, 0, pFixedInfo); return; } } else { + if (pAdapterInfo) + HeapFree(ProcessHeap, 0, pAdapterInfo); DoFormatMessage(0); return; } @@ -413,7 +426,7 @@ VOID ShowInfo(BOOL bAll) _tprintf(_T("\tIP Routing Enabled. . . . . . . . : Yes\n")); else _tprintf(_T("\tIP Routing Enabled. . . . . . . . : No\n")); - if (pAdapter->HaveWins) + if (pAdapter && pAdapter->HaveWins) _tprintf(_T("\tWINS Proxy enabled. . . . . . . . : Yes\n")); else _tprintf(_T("\tWINS Proxy enabled. . . . . . . . : No\n")); @@ -494,7 +507,8 @@ VOID ShowInfo(BOOL bAll) } HeapFree(ProcessHeap, 0, pFixedInfo); - HeapFree(ProcessHeap, 0, pAdapterInfo); + if (pAdapterInfo) + HeapFree(ProcessHeap, 0, pAdapterInfo); } VOID Release(LPTSTR Index)