|
Message-ID: <20221204040254.pfd3bqjztfw4vrue@localhost> Date: Sun, 4 Dec 2022 00:02:54 -0400 From: Kenny MacDermid <kenny@...dermid.ca> To: musl@...ts.openwall.com Subject: lookup_name issue with search domains Hello, I'm seeing an issue in resolving hosts when any resolv.conf search domain returns a no-data response. In debugging I believe it's caused by the check in network/lookup_name.c, line 225: if (cnt) return cnt; The code is looping through the search domains trying each one. This works fine for some of my search domains because the DNS response will have reply code flags set to 3, which causes name_from_dns() to return 0. The issue arises when it queries my cloudflare hosted domain (which also uses dnssec). That query does not have the reply code flags set to 3. Instead it's set to 0. This results in name_from_dns() returning EAI_NODATA. Because of the above mentioned check, this value is directly returned and subsequent domains (and most importantly the domain without anything appended) are not tested. When I replaced the condition with `(cnt > 0)` it worked for me. I'm not sure that's the best solution, but I also can't see a reason to stop attempting to lookup the host because an unrelated host caused some error. To add some context, this was seen in a golang program running on a kind/Kubernetes cluster. In these clusters ndots is set to 5 so pretty much every name is first checked against the search list. When using the golang resolver with `GODEBUG=netdns=go` I do not see the same issue.
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.