From: Vladimír Čunát Date: Sat, 10 Jun 2023 08:34:12 +0000 (+0200) Subject: hints: fix names inside home.arpa. X-Git-Tag: v5.7.0~3^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af59d6b7895b873c5e94bf41b8992a179b12fe75;p=thirdparty%2Fknot-resolver.git hints: fix names inside home.arpa. Reported on https://forum.turris.cz/t/knot-resolver-with-local-fqdn-hostnames/19034/8 I write it as three comparisons, as it seems like a simple way of still running only a single comparison in the typical case of QNAME not falling under .arpa. Tested just quickly, manually. This chunk of code already is replaced for kresd >= 6.0.0. --- diff --git a/NEWS b/NEWS index c9a1c73be..5eaa0ffd9 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ Bugfixes -------- - fix unusual timestamp format in debug dumps of records (!1386) - adjust linker options; it should help less common platforms (!1384) +- hints module: fix names inside home.arpa. (!1406) Knot Resolver 5.6.0 (2023-01-26) diff --git a/modules/hints/hints.c b/modules/hints/hints.c index 34c08b9ff..a3f2f3002 100644 --- a/modules/hints/hints.c +++ b/modules/hints/hints.c @@ -152,7 +152,11 @@ static int query(kr_layer_t *ctx, knot_pkt_t *pkt) } /* FIXME: putting directly into packet breaks ordering in case the hint * is applied after a CNAME jump. */ - if (knot_dname_in_bailiwick(qry->sname, (const uint8_t *)"\4arpa\0") >= 0) { + const bool is_rev = + knot_dname_in_bailiwick(qry->sname, (const uint8_t *)"\4arpa\0") > 0 && + (knot_dname_in_bailiwick(qry->sname, (const uint8_t *)"\7in-addr\4arpa\0") > 0 + || knot_dname_in_bailiwick(qry->sname, (const uint8_t *)"\3ip6\4arpa\0") > 0); + if (is_rev) { if (satisfy_reverse(data, pkt, qry) != 0) return ctx->state; } else {