Author: janderwald Date: Mon Dec 1 07:54:25 2008 New Revision: 37789
URL: http://svn.reactos.org/svn/reactos?rev=37789&view=rev Log: - fix ipconfig output when no nic adapter is present, patch by Lucas Suggs, <anakha AT cat DOT pdx DOT edu> - bug 3928 - fix a few memory leaks
Modified: trunk/reactos/base/applications/network/ipconfig/ipconfig.c
Modified: trunk/reactos/base/applications/network/ipconfig/ipconfig.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/network/i... ============================================================================== --- trunk/reactos/base/applications/network/ipconfig/ipconfig.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/network/ipconfig/ipconfig.c [iso-8859-1] Mon Dec 1 07:54:25 2008 @@ -360,15 +360,18 @@ 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 @@ } else { - DoFormatMessage(0); - return; + if( ERROR_NO_DATA != ret ) + { + DoFormatMessage(0); + return; + } }
/* call GetNetworkParams to obtain the network info */ @@ -386,17 +392,24 @@ { 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 @@ _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 @@ }
HeapFree(ProcessHeap, 0, pFixedInfo); - HeapFree(ProcessHeap, 0, pAdapterInfo); + if (pAdapterInfo) + HeapFree(ProcessHeap, 0, pAdapterInfo); }
VOID Release(LPTSTR Index)