|
Message-ID: <20210430001301.GW2546@brightrain.aerifal.cx> Date: Thu, 29 Apr 2021 20:13:03 -0400 From: Rich Felker <dalias@...c.org> To: Bob Richmond <robert.richmond@...enwavesystems.com> Cc: musl@...ts.openwall.com Subject: Re: getaddrinfo/AI_ADDRCONFIG with ipv6 disabled On Wed, Dec 04, 2019 at 06:44:29PM -0800, Bob Richmond wrote: > connect() to the IPv6 loopback address can fail with EACCES on Linux > if IPv6 is disabled on the lo interface, and causes getaddrinfo to > fail without returning IPv4 addresses. It should be treated as if > IPv6 is disabled. > > echo 1 >/proc/sys/net/ipv6/conf/lo/disable_ipv6 > > struct addrinfo hints, *res = NULL; > hints.ai_family = PF_UNSPEC; > hints.ai_flags = AI_ADDRCONFIG; > getaddrinfo("192.168.1.1", "80", &hints, &res); > > strace: > ======start======= > socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_UDP) = 14 > connect(14, {sa_family=AF_INET, sin_port=htons(65535), > sin_addr=inet_addr("127.0.0.1")}, 16) = 0 > close(14) = 0 > > socket(AF_INET6, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_UDP) = 14 > > connect(14, {sa_family=AF_INET6, sin6_port=htons(65535), > inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=htonl(0), > sin6_scope_id=0}, 28) = -1 EACCES (Permission denied) > close(14) = 0 > writev(2, [{iov_base="[warn] getaddrinfo: Permission denied\n", > iov_len=38}, {iov_base=NULL, iov_len=0}], 2) = 38 > ======end========= > --- musl-1.1.24/src/network/getaddrinfo.c 2019-10-13 14:58:27.000000000 -0700 > +++ musl-1.1.24/src/network/getaddrinfo.c 2019-12-04 14:52:11.003784091 -0800 > @@ -76,6 +76,7 @@ > case EHOSTUNREACH: > case ENETDOWN: > case ENETUNREACH: > + case EACCES: > break; > default: > return EAI_SYSTEM; This patch was overlooked at the time, and another user just stopped by #musl to ask why it wasn't applied. I'm going to go ahead and apply it now. Sorry for the long delay! Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.