Fix for Segfault in initiate_socket_connection (socketio_berkeley) when DNS resolution fails (gh#636) (#637)
* Fix for Segfault in initiate_socket_connection (socketio_berkeley) when DNS resolution fails (gh#636) * Add missing else statement * Adding check to assert hostname is not NULL --------- Co-authored-by: RLeclair <raulleclair@microsoft.com>
This commit is contained in:
Родитель
3b32444f1b
Коммит
8ee0e5d88d
|
@ -519,6 +519,8 @@ static int initiate_socket_connection(SOCKET_IO_INSTANCE* socket_io_instance)
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (socket_io_instance->hostname != NULL)
|
||||
{
|
||||
size_t hostname_len = strlen(socket_io_instance->hostname);
|
||||
if (hostname_len + 1 > sizeof(addrInfoUn.sun_path))
|
||||
|
@ -535,7 +537,15 @@ static int initiate_socket_connection(SOCKET_IO_INSTANCE* socket_io_instance)
|
|||
result = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LogError("Hostname is NULL");
|
||||
result = MU_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
if(result == 0)
|
||||
{
|
||||
if (socket_io_instance->address_type == ADDRESS_TYPE_IP)
|
||||
{
|
||||
socket_io_instance->socket = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
|
||||
|
@ -550,18 +560,15 @@ static int initiate_socket_connection(SOCKET_IO_INSTANCE* socket_io_instance)
|
|||
LogError("Failure: socket create failure %d.", socket_io_instance->socket);
|
||||
result = MU_FAILURE;
|
||||
}
|
||||
#ifndef __APPLE__
|
||||
#ifndef __APPLE__
|
||||
else if (socket_io_instance->target_mac_address != NULL &&
|
||||
set_target_network_interface(socket_io_instance->socket, socket_io_instance->target_mac_address) != 0)
|
||||
{
|
||||
LogError("Failure: failed selecting target network interface (MACADDR=%s).", socket_io_instance->target_mac_address);
|
||||
result = MU_FAILURE;
|
||||
}
|
||||
#endif //__APPLE__
|
||||
|
||||
if(result == 0)
|
||||
{
|
||||
if ((-1 == (flags = fcntl(socket_io_instance->socket, F_GETFL, 0))) ||
|
||||
#endif //__APPLE__
|
||||
else if ((-1 == (flags = fcntl(socket_io_instance->socket, F_GETFL, 0))) ||
|
||||
(fcntl(socket_io_instance->socket, F_SETFL, flags | O_NONBLOCK) == -1))
|
||||
{
|
||||
LogError("Failure: fcntl failure.");
|
||||
|
@ -583,7 +590,7 @@ static int initiate_socket_connection(SOCKET_IO_INSTANCE* socket_io_instance)
|
|||
LogError("Failure: connect failure %d.", errno);
|
||||
result = MU_FAILURE;
|
||||
}
|
||||
else
|
||||
else // result == 0 || errno == EINPROGRESS
|
||||
{
|
||||
// Async connect will return -1.
|
||||
result = 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче