On Mon, Mar 14, 2022 at 12:16 AM Iain Sandoe via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > The getaddrinfo() call requires either a non-null name for the server or > a port service / number. In the code that opens a connection we have > been calling this with a dummy port number of "0". Unfortunately this > triggers a crashing bug in some BSD versions (and OSes importing that code). > > In this part of the code we do not really need a port number, since it > is not reasonable to open a connection to an unspecified host. > > Setting hints ai_flags field to 0, and the servname parm to nullptr works > around the BSD bug in this case. > > Also posted upstream. > > (fixes bad-mapper-2/3 on the versions affected). > > tested on powerpc,i686-darwin9, x86-64-darwin10,17,20 > powerpc64le,powerpc64,x86_64-linux-gnu, > > OK for master?
LGTM. > eventual backports? After a while, yes. > thanks > Iain > > Signed-off-by: Iain Sandoe <i...@sandoe.co.uk> > > libcody/ChangeLog: > > * netclient.cc (OpenInet6): Do not provide a dummy port number > in the getaddrinfo() call. > --- > libcody/netclient.cc | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/libcody/netclient.cc b/libcody/netclient.cc > index 7f81dd91810..558808be485 100644 > --- a/libcody/netclient.cc > +++ b/libcody/netclient.cc > @@ -93,7 +93,7 @@ int OpenInet6 (char const **e, char const *name, int port) > } > > addrinfo hints; > - hints.ai_flags = AI_NUMERICSERV; > + hints.ai_flags = 0; > hints.ai_family = AF_INET6; > hints.ai_socktype = SOCK_STREAM; > hints.ai_protocol = 0; > @@ -102,9 +102,7 @@ int OpenInet6 (char const **e, char const *name, int port) > hints.ai_canonname = nullptr; > hints.ai_next = nullptr; > > - /* getaddrinfo requires a port number, but is quite happy to accept > - invalid ones. So don't rely on it. */ > - if (int err = getaddrinfo (name, "0", &hints, &addrs)) > + if (int err = getaddrinfo (name, nullptr, &hints, &addrs)) > { > errstr = gai_strerror (err); > // What's the best errno to set? > -- > 2.24.3 (Apple Git-128) >