mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 16:35:49 +00:00
[NSLOOKUP] Fix crash in case of no network connectivity (#1354)
Prevent nslookup.exe from crashing when executed in a ROS VM with no network interfaces. This is due to a NULL pointer dereference occurring if `GetNetworkParams` in `main` fails with an error other than `ERROR_BUFFER_OVERFLOW`. In this case, `pNetInfo` remains initialized to NULL, causing `strncpy` to crash.
This commit is contained in:
parent
67a3747722
commit
42515190c5
1 changed files with 20 additions and 15 deletions
|
@ -792,26 +792,31 @@ int main( int argc, char* argv[] )
|
||||||
/* We don't know how long of a buffer it will want to return. So we'll
|
/* We don't know how long of a buffer it will want to return. So we'll
|
||||||
pass an empty one now and let it fail only once, instead of guessing. */
|
pass an empty one now and let it fail only once, instead of guessing. */
|
||||||
Status = GetNetworkParams( pNetInfo, &NetBufLen );
|
Status = GetNetworkParams( pNetInfo, &NetBufLen );
|
||||||
if( Status == ERROR_BUFFER_OVERFLOW )
|
|
||||||
|
if( Status != ERROR_BUFFER_OVERFLOW )
|
||||||
{
|
{
|
||||||
pNetInfo = (PFIXED_INFO)HeapAlloc( ProcessHeap, 0, NetBufLen );
|
_tprintf( _T("Error in GetNetworkParams call\n") );
|
||||||
if( pNetInfo == NULL )
|
|
||||||
{
|
|
||||||
_tprintf( _T("ERROR: Out of memory\n") );
|
|
||||||
|
|
||||||
return -1;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For real this time. */
|
pNetInfo = (PFIXED_INFO)HeapAlloc( ProcessHeap, 0, NetBufLen );
|
||||||
Status = GetNetworkParams( pNetInfo, &NetBufLen );
|
if( pNetInfo == NULL )
|
||||||
if( Status != NO_ERROR )
|
{
|
||||||
{
|
_tprintf( _T("ERROR: Out of memory\n") );
|
||||||
_tprintf( _T("Error in GetNetworkParams call\n") );
|
|
||||||
|
|
||||||
HeapFree( ProcessHeap, 0, pNetInfo );
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return -2;
|
/* For real this time. */
|
||||||
}
|
Status = GetNetworkParams( pNetInfo, &NetBufLen );
|
||||||
|
if( Status != NO_ERROR )
|
||||||
|
{
|
||||||
|
_tprintf( _T("Error in GetNetworkParams call\n") );
|
||||||
|
|
||||||
|
HeapFree( ProcessHeap, 0, pNetInfo );
|
||||||
|
|
||||||
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy( State.domain, pNetInfo->DomainName, 255 );
|
strncpy( State.domain, pNetInfo->DomainName, 255 );
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue