mirror of
https://github.com/isc-projects/bind9.git
synced 2026-02-23 18:04:10 -05:00
In BIND 9.11 and earlier, dig and similar tools used liblwres for parsing /etc/resolv.conf. After getting a list of servers from liblwres, a tool would check the address family of each server found and reject those unusable. When the resulting list of usable servers was empty, localhost addresses were queried as a fallback. When liblwres was removed in BIND 9.12, dig and similar tools were updated to parse /etc/resolv.conf using libirs instead. As part of that process, the localhost fallback was removed from bin/dig/dighost.c since the localhost fallback built into libirs was deemed to be sufficient. However, libirs only falls back to localhost if it does not find any name servers at all; if it does find any valid nameserver entry in /etc/resolv.conf, it just returns it to the caller because it is oblivious to whether the caller supports IPv4 and/or IPv6 or not. The code in bin/dig/dighost.c subsequently filters the returned list of servers in get_server_list() according to the requested address family restrictions. This may result in none of the addresses returned by libirs being usable, in which case a tool will attempt to work with an empty server list, causing a hang and subsequently a crash upon user interruption. Restore the localhost fallback in bin/dig/dighost.c to prevent the aforementioned hangs and crashes and ensure recent BIND versions behave identically to the older ones in the circumstances described above. |
||
|---|---|---|
| .. | ||
| check | ||
| confgen | ||
| delv | ||
| dig | ||
| dnssec | ||
| named | ||
| nsupdate | ||
| pkcs11 | ||
| python | ||
| rndc | ||
| tests | ||
| tools | ||
| win32/BINDInstall | ||
| Makefile.in | ||