mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-07 06:53:33 +00:00
Fix calling __dns_parse with potentially too large rlen
__res_send returns the full answer length even if it didn't fit the buffer, but __dns_parse expects the length of the filled part of the buffer. Analogous to Musl commit 77327ed064bd57b0e1865cd0e0364057ff4a53b4 which fixed the only other __dns_parse call site.
This commit is contained in:
parent
6992d8c195
commit
f8c0186221
1 changed files with 3 additions and 1 deletions
4
third_party/musl/getnameinfo.c
vendored
4
third_party/musl/getnameinfo.c
vendored
|
@ -206,8 +206,10 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl,
|
|||
query[3] = 0; /* don't need AD flag */
|
||||
int rlen = __res_send(query, qlen, reply, sizeof reply);
|
||||
buf[0] = 0;
|
||||
if (rlen > 0)
|
||||
if (rlen > 0) {
|
||||
if (rlen > sizeof reply) rlen = sizeof reply;
|
||||
__dns_parse(reply, rlen, dns_parse_callback, buf);
|
||||
}
|
||||
}
|
||||
if (!*buf) {
|
||||
if (flags & NI_NAMEREQD) return EAI_NONAME;
|
||||
|
|
Loading…
Reference in a new issue