summaryrefslogtreecommitdiff
path: root/src/network/lookup_name.c
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/network/lookup_name.c
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/network/lookup_name.c')
-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;