diff --git a/resolv/nss_dns/dns-network.c b/resolv/nss_dns/dns-network.c index 1e6511a4f4..4c365660bb 100644 --- a/resolv/nss_dns/dns-network.c +++ b/resolv/nss_dns/dns-network.c @@ -207,6 +207,10 @@ _nss_dns_getnetbyaddr_r (uint32_t net, int type, struct netent *result, sprintf (qbuf, "%u.%u.%u.%u.in-addr.arpa", net_bytes[3], net_bytes[2], net_bytes[1], net_bytes[0]); break; + default: + /* Default network (net is originally zero). */ + strcpy (qbuf, "0.0.0.0.in-addr.arpa"); + break; } net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024); diff --git a/resolv/tst-resolv-network.c b/resolv/tst-resolv-network.c index ada7137183..19b847d834 100644 --- a/resolv/tst-resolv-network.c +++ b/resolv/tst-resolv-network.c @@ -46,6 +46,9 @@ handle_code (const struct resolv_response_context *ctx, { switch (code) { + case 0: + send_ptr (b, qname, qclass, qtype, "0.in-addr.arpa"); + break; case 1: send_ptr (b, qname, qclass, qtype, "1.in-addr.arpa"); break; @@ -265,6 +268,9 @@ do_test (void) "error: TRY_AGAIN\n"); /* Lookup by address, success cases. */ + check_reverse (0, + "name: 0.in-addr.arpa\n" + "net: 0x00000000\n"); check_reverse (1, "name: 1.in-addr.arpa\n" "net: 0x00000001\n");