Hi Musl team, Recently we encountered an issue in requesting name resolution in Alpine Linux with Musl. Environment: * Alpine Linux 3.14.2 * IPv6 module disabled * musl-libc 1.2.2 * CoreDNS with "rewrite stop type AAAA A" configured Reproduce steps: 1. getent hosts 2. Check output Expected: Get correct IPv4 address, e.g. 10.96.36.74 Actual: Return an invalid IPv6 address, e.g. a60:244a::, which is the actual IPv4 32-bit address followed by zeros. Debugging: 1. Alpine Linux's getent ( https://github.com/alpinelinux/aports/blob/3.14-stable/main/musl/getent.c) tries gethostbyname2 with AF_INET6 first, if no result, then calls with AF_INET. 2. With requested family AF_INET6, gethostbyname2_r -> __lookup_name -> name_from_dns_search sends a DNS request with RR_AAAA to CoreDNS. 3. In CoreDNS, we configured "rewrite stop type AAAA A", which results in the RR_AAAA request type being rewritten to RR_A. So the response from CoreDNS is: AF_INET (2) and 32-bit IP 10.96.36.74 (0x0a60244a below). > (gdb) p addrs > $55 = {{family = 2, scopeid = 0, addr = "\n`$J", '\000' times>, sortkey = 0} > (gdb) x/4xb addrs[0]->addr > 0x7fffffffe0d8: 0x0a 0x60 0x24 0x4a > 4. In gethostbyname2_r, the result address family is assigned to the request's family, regardless of the family in the response. > h->h_addrtype = af; > h->h_length = af==AF_INET6 ? 16 : 4; > This results in the IPv4 address replied from CoreDNS is wrongly copied to the result as IPv6 address which is a60:244a:: . 5. getent gets an IPv4 address, so it won't try AF_INET, rather directly return the invalid IPv6 address a60:244a:: . Suggested fix: In gethostbyname2_r when adding answered addresses into the result, we need to filter out the addresses with mismatching address family. > for (i=0; i // if (addrs[i].family != h->h_addrtype) continue; // need to fix the > index of h->h_addr_list too > h->h_addr_list[i] = (void *)buf; > buf += h->h_length; > memcpy(h->h_addr_list[i], addrs[i].addr, h->h_length); > } > Could you review this issue? Thanks in advance! Best regards! Tom Shen