about summary refs log tree commit diff
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
musl-0a7b4323b0f2b944dbd47a813c0c6e6813e7fd67.tar.xz
musl-0a7b4323b0f2b944dbd47a813c0c6e6813e7fd67.zip
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;