Hello Boost users,
I experienced a segmentation fault inside Boost in the following scenario:
o There was an illegal DNS entry
o When resolving that illegal DNS entry on a Yocto-based embedded Linux distribution,
::getaddrinfo() returned with the error code
EAI_SYSTEM but
errno was set to 0
o The function
translate_addrinfo_error(int) in boost/asio/detail/impl/socket_ops.ipp translates
this into boost::system::error_code(0, boost::asio::error::get_system_category())
o This is then interpreted as a success by the calling function and the other output parameters of
::getaddrinfo() are accessed which resulted in the segmentation fault
My question would be whether this should be considered a bug in the Boost ASIO library?
One could argue that the system should not return EAI_SYSTEM with errno not being set properly.
But one could also argue that returning EAI_SYSTEM indicates that something went wrong and that the output parameters are not to be accessed.
Nils
------
Nils Frielinghaus