summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2022-10-19 13:33:03 -0400
committerRich Felker <dalias@aerifal.cx>2022-10-19 14:01:45 -0400
commit0a7b4323b0f2b944dbd47a813c0c6e6813e7fd67 (patch)
tree8e693db5dda5f75838c98a1abb9db27a09b7d335 /src
parent41603c7706f8a4c1b1a2a23e49ff7490f6860dc2 (diff)
downloadmusl-0a7b4323b0f2b944dbd47a813c0c6e6813e7fd67.tar.gz
dns response handling: don't treat too many addresses as an error
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.
Diffstat (limited to 'src')
-rw-r--r--src/network/lookup_name.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/network/lookup_name.c b/src/network/lookup_name.c
index de0fefee..be0c0bdd 100644
--- a/src/network/lookup_name.c
+++ b/src/network/lookup_name.c
@@ -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;