nameserv: avoid sockaddr_in6 with disabled IPv6 support

Fixes: 10c760a80c ("nameserv: require getaddrinfo() and getnameinfo()")
This commit is contained in:
Miroslav Lichvar 2021-04-21 14:40:12 +02:00
parent 3f6528da77
commit 039b388c82

View file

@ -130,7 +130,11 @@ int
DNS_IPAddress2Name(IPAddr *ip_addr, char *name, int len) DNS_IPAddress2Name(IPAddr *ip_addr, char *name, int len)
{ {
char *result = NULL; char *result = NULL;
struct sockaddr_in6 in6; #ifdef FEAT_IPV6
struct sockaddr_in6 saddr;
#else
struct sockaddr_in saddr;
#endif
IPSockAddr ip_saddr; IPSockAddr ip_saddr;
socklen_t slen; socklen_t slen;
char hbuf[NI_MAXHOST]; char hbuf[NI_MAXHOST];
@ -138,8 +142,8 @@ DNS_IPAddress2Name(IPAddr *ip_addr, char *name, int len)
ip_saddr.ip_addr = *ip_addr; ip_saddr.ip_addr = *ip_addr;
ip_saddr.port = 0; ip_saddr.port = 0;
slen = SCK_IPSockAddrToSockaddr(&ip_saddr, (struct sockaddr *)&in6, sizeof (in6)); slen = SCK_IPSockAddrToSockaddr(&ip_saddr, (struct sockaddr *)&saddr, sizeof (saddr));
if (!getnameinfo((struct sockaddr *)&in6, slen, hbuf, sizeof (hbuf), NULL, 0, 0)) if (!getnameinfo((struct sockaddr *)&saddr, slen, hbuf, sizeof (hbuf), NULL, 0, 0))
result = hbuf; result = hbuf;
if (result == NULL) if (result == NULL)