dns response handling: don't treat too many addresses as an error
authorRich Felker <dalias@aerifal.cx>
Wed, 19 Oct 2022 17:33:03 +0000 (13:33 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 19 Oct 2022 18:01:45 +0000 (14:01 -0400)
returning -1 rather than 0 from the parse function causes __dns_parse
to bail out and return an error. presently, name_from_dns does not
check the return value anyway, so this does not matter, but if it ever
started treating this as an error, lookups with large numbers of
addresses would break. this is a consequence of adding TCP support and
extending the buffer size used in name_from_dns.

src/network/lookup_name.c

index de0fefe..be0c0bd 100644 (file)
@@ -115,7 +115,7 @@ static int dns_parse_callback(void *c, int rr, const void *data, int len, const
 {
        char tmp[256];
        struct dpc_ctx *ctx = c;
-       if (ctx->cnt >= MAXADDRS) return -1;
+       if (ctx->cnt >= MAXADDRS) return 0;
        switch (rr) {
        case RR_A:
                if (rr != ctx->rrtype) return 0;