bind9/lib/dns
Ondřej Surý 9191dc7acb Fix delegation database NOEXACT lookup for top-level names
dns__deleg_lookup() with DNS_DBFIND_NOEXACT is supposed to return
the deepest proper ancestor of the lookup name.  It called
getparentnode() to step up from an exact match, but getparentnode()
only iterated while the chain length was >= 2.  When the chain
contained a single entry (the exact match itself with no ancestor
stored in the trie), the loop did not execute and left the caller
looking at the exact match.  The subsequent isactive() check then
returned success and the function reported the exact match as the
"deepest ancestor", violating NOEXACT semantics.

This was observable as the resolver picking the child-side
delegation for an at-parent type (e.g. a DS query for a TLD), then
sending the query to the child's own nameservers and recovering via
the "chase DS servers" path.

Have getparentnode() set '*node' to NULL when it cannot find an
active proper ancestor, and make dns__deleg_lookup() NULL-check
before returning, matching the canonical NOEXACT implementation in
dns_zt_find().  Update the deleg unit test to expect NOTFOUND for
the top-level-no-parent case.
2026-04-16 11:28:13 +02:00
..
include Make zone filename expansion accessible from outside dns_zone 2026-04-14 21:49:59 -07:00
rdata Change NSEC3 and NSEC3PARAM struct fields to use isc_region_t 2026-04-02 16:53:18 +02:00
.gitignore Add support for User Statically Defined Tracing (USDT) probes 2023-08-21 18:39:53 +02:00
acl.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
acl_p.h Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
adb.c enforce dns_adb_createaddrinfofind() invariant 2026-04-08 17:26:49 +02:00
badcache.c Apply the changes from updated set_if_not_null semantic patch 2025-10-08 17:44:50 +02:00
byaddr.c Share reverse (ARPA) domain names 2025-10-01 12:16:05 +02:00
cache.c Remove the dead dns_expire_ttl code path and deletettl stats counter 2026-03-30 21:46:44 +02:00
callbacks.c Convert all categories and modules into static lists 2024-08-20 12:50:39 +00:00
catz.c Remove unnecessary dns_name_free call 2026-04-15 09:00:26 +10:00
client.c Add switch to disable cookie checking in delv 2026-03-26 11:18:26 +11:00
clientinfo.c refactor dns_clientinfo_init(); use separate function to set ECS 2023-02-07 23:48:22 -08:00
compress.c remove the 'name_coff' parameter in dns_name_towire() 2025-02-25 12:53:25 -08:00
db.c Remove node and db pointer from dns_rdataset_t.vec 2026-03-31 16:22:56 +02:00
db_p.h Remove node and db pointer from dns_rdataset_t.vec 2026-03-31 16:22:56 +02:00
dbiterator.c Implement dns_dbiterator_seek3 2025-12-10 14:18:52 +01:00
deleg.c Fix delegation database NOEXACT lookup for top-level names 2026-04-16 11:28:13 +02:00
diff.c Refactor setsigningtime 2026-03-31 16:22:56 +02:00
dispatch.c Include disptype and transport in dispatch hash key 2026-04-14 17:48:24 +02:00
dlz.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
dlz_p.h Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
dns64.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
dnssec.c Update dns_dnssec_sync(update|delete) return code 2025-12-19 14:08:15 +01:00
dnstap.c Take 'env' reference before async calling perform_reopen() 2026-03-18 16:10:07 +00:00
ds.c switch isc_md_type_t to a proper enum 2026-02-02 11:12:55 +03:00
dst_api.c switch isc_md_type_t to a proper enum 2026-02-02 11:12:55 +03:00
dst_internal.h Separate isc_hmac between pre and post OpenSSL 3.0 2026-02-02 11:50:14 +03:00
dst_openssl.h move openssl error reporting to isc/ossl_wrap 2026-02-02 11:50:14 +03:00
dst_parse.c Use isc__zero_or_more when calling isc_base64_tobuffer 2026-01-28 00:25:04 +11:00
dst_parse.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
dyndb.c Move zonemgr to own source file 2026-04-08 14:24:17 +02:00
dyndb_p.h Move the library init and shutdown to executables 2025-02-22 16:19:00 +01:00
ecs.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
ede.c add dns_message API to add EDNS options 2025-11-21 11:13:18 -08:00
fixedname.c Simplify dns_name_init() 2025-02-25 12:17:34 +01:00
forward.c Fix formatting after refactor 2025-12-10 11:28:10 +01:00
gen.c Silence "may be truncated" warnings 2025-08-04 15:38:17 +02:00
geoip2.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
gssapi_link.c Deprecate max-rsa-exponent-size, always use 4096 instead 2025-05-21 00:50:08 +02:00
gssapictx.c Release gnamebuf also on the error path 2026-02-06 18:33:44 +01:00
hmac_link.c don't transform errors in hmac_sign 2026-02-02 11:50:14 +03:00
ipkeylist.c Simplify dns_name_init() 2025-02-25 12:17:34 +01:00
iptable.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
journal.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
kasp.c Refactor dns_kasp_attach/detach 2026-01-23 09:59:52 +00:00
key.c Cleanup the DST cryptographic API 2025-05-20 09:52:35 +02:00
keydata.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
keymgr.c Fix setting retire in dns_keymgr_key_init 2026-03-05 10:14:45 +00:00
keystore.c Fix log level bug in keystore 2026-02-25 11:34:07 +01:00
keytable.c Fix rwlock type mismatch in delete_ds() error path 2026-03-17 16:05:11 +01:00
lib.c Replace lock keyfile hashmap with lock pool 2026-03-06 12:31:24 +01:00
master.c Dispatch async work jobs from the correct loop 2026-03-14 06:32:54 +01:00
masterdump.c Dispatch async work jobs from the correct loop 2026-03-14 06:32:54 +01:00
meson.build Move zonemgr to own source file 2026-04-08 14:24:17 +02:00
message.c Apply the dns_rdataset_cleanup patch through the codebase 2025-12-17 15:19:55 +01:00
name.c dns_name_totext() can now resize dynamic buffers 2025-12-09 12:26:30 -08:00
nametree.c Fix formatting after refactor 2025-12-10 11:28:10 +01:00
ncache.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
notify.c Remove unneccesary functions 2026-04-02 15:50:09 +02:00
nsec.c Lower case the NSEC next owner name when signing 2026-01-23 11:52:59 +00:00
nsec3.c Change NSEC3 and NSEC3PARAM struct fields to use isc_region_t 2026-04-02 16:53:18 +02:00
nta.c Revert NTA flush on expire 2026-03-30 18:27:35 +00:00
openssl_link.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
openssl_shim.h Move the dst__openssl_toresult to isc_tls unit 2024-08-08 11:59:41 +02:00
opensslecdsa_link.c expose isc__crypto_md in isc/ossl_wrap.h 2026-02-02 11:50:14 +03:00
openssleddsa_link.c cleanup unused header in isc/md.h 2026-02-02 11:50:14 +03:00
opensslrsa_link.c expose isc__crypto_md in isc/ossl_wrap.h 2026-02-02 11:50:14 +03:00
order.c Use ControlStatementsExceptControlMacros for SpaceBeforeParens 2025-08-19 07:58:33 +02:00
peer.c switch to RETERR where it wasn't being used 2025-12-03 13:45:43 -08:00
private.c Apply the dns_rdataset_cleanup patch through the codebase 2025-12-17 15:19:55 +01:00
probes-dns.d Use unique names for probes.d files 2025-09-24 13:18:13 +02:00
qp.c Fix formatting after refactor 2025-12-10 11:28:10 +01:00
qp_p.h Fix formatting after refactor 2025-12-10 11:28:10 +01:00
qpcache.c Remove the dead dns_expire_ttl code path and deletettl stats counter 2026-03-30 21:46:44 +02:00
qpcache_p.h Remove the heap memory context from QPcache 2026-03-30 21:46:44 +02:00
qpzone.c Fix wrong NSEC proof for empty non-terminals after IXFR 2026-04-03 06:33:31 +02:00
qpzone_p.h Replace per-zone lock buckets with global buckets 2025-07-09 15:27:38 +02:00
rcode.c standardize CHECK and RETERR macros 2025-12-03 13:26:28 -08:00
rdata.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
rdatalist.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
rdataset.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
rdatasetiter.c add DNS_DBITERATOR_FOREACH and DNS_RDATASETITER_FOREACH 2025-05-27 21:08:09 -07:00
rdataslab.c Remove TTL-based cleaning from the QPcache 2026-03-30 21:46:44 +02:00
rdataslab_p.h Use ISC_UxxTOyy_BE macros for {peek,get,put}_uint16 macros 2025-08-18 12:36:47 +02:00
rdatavec.c Fix benign race condition 2026-03-31 16:25:33 +02:00
rdatavec_p.h Fix formatting 2025-12-10 12:18:34 +01:00
remote.c simplify code around isc_mem_put() and isc_mem_free() 2025-05-28 17:22:32 -07:00
request.c Use sequential per-dispatch message IDs for TCP 2026-04-14 17:48:21 +02:00
resconf.c use a standard CLEANUP macro 2025-12-03 13:45:43 -08:00
resolver.c Implement seamless TCP connection reuse in dns_dispatch 2026-04-14 17:48:13 +02:00
result.c clean up result codes that are never used 2025-01-23 15:54:57 -08:00
rootns.c Apply the dns_rdataset_cleanup patch through the codebase 2025-12-17 15:19:55 +01:00
rpz.c Fix a bug in rpz.c:del_name() 2026-03-14 13:01:55 +01:00
rriterator.c Apply the dns_rdataset_cleanup patch through the codebase 2025-12-17 15:19:55 +01:00
rrl.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
sdlz.c dns_rdataset_* const parameters 2026-01-30 19:33:42 +01:00
skr.c Importing invalid SKR file might overflow the stack buffer 2026-02-24 19:44:57 +01:00
soa.c Simplify dns_name_init() 2025-02-25 12:17:34 +01:00
ssu.c Use ControlStatementsExceptControlMacros for SpaceBeforeParens 2025-08-19 07:58:33 +02:00
ssu_external.c Remove redundant parentheses from the return statement 2024-11-19 12:27:22 +01:00
stats.c Add low contention stats counter 2026-03-26 10:19:25 +01:00
tests Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
time.c Use clang-format-22 to update formatting 2026-03-04 10:56:41 +01:00
tkey.c Fix GSS context leak on error paths in process_gsstkey() 2026-04-01 07:04:40 +02:00
transport.c switch to CHECK where it wasn't being used 2025-12-03 13:45:42 -08:00
tsig.c Fix off-by-one in TSIG generated key eviction 2026-04-01 07:04:39 +02:00
tsig_p.h Remove C++ support from the public header 2024-12-18 13:10:39 +01:00
ttl.c standardize CHECK and RETERR macros 2025-12-03 13:26:28 -08:00
unreachcache.c Change the loopmgr to be singleton 2025-07-23 22:44:16 +02:00
update.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
validator.c Use the delegation database in get_dsset() 2026-04-16 11:28:13 +02:00
view.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
xfrin.c Implement seamless TCP connection reuse in dns_dispatch 2026-04-14 17:48:13 +02:00
zone.c Move dns_zone_next/dns_zone_first to zonemgr 2026-04-08 14:27:06 +02:00
zone_p.h Rename private zone functions 2026-04-08 14:24:17 +02:00
zonefetch.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00
zonemgr.c Move dns_zone_next/dns_zone_first to zonemgr 2026-04-08 14:27:06 +02:00
zoneproperties.c Make zone filename expansion accessible from outside dns_zone 2026-04-14 21:49:59 -07:00
zoneverify.c Use the correct maximal compressed bit map buffer size 2026-04-10 15:45:01 +10:00
zt.c Move zone set/get properties to own source file 2026-04-02 15:50:07 +02:00