public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-7705] c++tools: Work around a BSD bug in getaddrinfo().
@ 2022-03-18 15:24 Iain D Sandoe
  0 siblings, 0 replies; only message in thread
From: Iain D Sandoe @ 2022-03-18 15:24 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:41f01c97153d403fb34eefac245bab8ba472beea

commit r12-7705-g41f01c97153d403fb34eefac245bab8ba472beea
Author: Iain Sandoe <iain@sandoe.co.uk>
Date:   Sun Mar 13 16:34:54 2022 +0000

    c++tools: Work around a BSD bug in getaddrinfo().
    
    Some versions of the BSD getaddrinfo() call do not work with the specific
    input of "0" for the servname entry (a segv results).  Since we are making
    the call with a dummy port number, the value is actually no important, other
    than it should be in range.  Work around the BSD bug by using "1" instead.
    
    Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
    
    c++tools/ChangeLog:
    
            * server.cc (accept_from): Use "1" as the dummy port number.

Diff:
---
 c++tools/server.cc | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/c++tools/server.cc b/c++tools/server.cc
index 8c6ad314886..00154a05925 100644
--- a/c++tools/server.cc
+++ b/c++tools/server.cc
@@ -360,7 +360,11 @@ accept_from (char *arg ATTRIBUTE_UNUSED)
   hints.ai_next = NULL;
 
   struct addrinfo *addrs = NULL;
-  if (int e = getaddrinfo (slash == arg ? NULL : arg, "0", &hints, &addrs))
+  /* getaddrinfo requires either hostname or servname to be non-null, so that we must
+     set a port number (to cover the case that the string passed contains just /NN).
+     Use an arbitrary in-range port number, but avoiding "0" which triggers a bug on
+     some BSD variants.  */
+  if (int e = getaddrinfo (slash == arg ? NULL : arg, "1", &hints, &addrs))
     {
       noisy ("cannot resolve '%s': %s", arg, gai_strerror (e));
       ok = false;


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-03-18 15:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-18 15:24 [gcc r12-7705] c++tools: Work around a BSD bug in getaddrinfo() Iain D Sandoe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).