Browse Source

dns: fix nameserver OOB read in IPv6-disabled fallback

In __res_msend_rc(), the IPv6-disabled fallback check uses conf->ns[nns]
inside a loop controlled by i, so it tests a fixed slot instead of
walking configured nameservers. This reads one past the array's size.

Use conf->ns[i] so the loop correctly detects whether all configured
nameservers are IPv6-only.
master
Liam Wachter 2 months ago
committed by Rich Felker
parent
commit
6f6bd4a189
  1. 2
      src/network/res_msend.c

2
src/network/res_msend.c

@ -124,7 +124,7 @@ int __res_msend_rc(int nqueries, const unsigned char *const *queries,
/* Handle case where system lacks IPv6 support */
if (fd < 0 && family == AF_INET6 && errno == EAFNOSUPPORT) {
for (i=0; i<nns && conf->ns[nns].family == AF_INET6; i++);
for (i=0; i<nns && conf->ns[i].family == AF_INET6; i++);
if (i==nns) {
pthread_setcancelstate(cs, 0);
return -1;

Loading…
Cancel
Save