]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
2 months agochg: nil: Cleanup the duplicate logic and comments around add into NSEC tree
Ondřej Surý [Mon, 16 Mar 2026 11:17:16 +0000 (12:17 +0100)] 
chg: nil: Cleanup the duplicate logic and comments around add into NSEC tree

After merging the NORMAL, NSEC and NSEC3 tree into single QP tree, there were some comments still speaking about auxiliary NSEC tree. These were cleaned up and the logic when we pass the qp tree (write transaction) to qpzone_addrdataset_inner() was changed to be more obvious that this is needed only when we are adding NSEC records.

Merge branch 'ondrej/additional-cleanups-around-NSEC-namespace' into 'main'

See merge request isc-projects/bind9!11695

2 months agoCleanup weird syntax defining struct dns_ixfr
Ondřej Surý [Sat, 31 Jan 2026 06:32:08 +0000 (07:32 +0100)] 
Cleanup weird syntax defining struct dns_ixfr

The struct dns_ixfr was defined as part of struct dns_xfrin, probably
because at some point it was an anonymous struct and then it was changed
to named struct with typedef at the top.  Move the definition from
struct dns_xfrin into and fold into the typedef ... dns_ixfr_t.

2 months agoCleanup the duplicate logic and comments around add into NSEC tree
Ondřej Surý [Sat, 31 Jan 2026 06:24:49 +0000 (07:24 +0100)] 
Cleanup the duplicate logic and comments around add into NSEC tree

After merging the NORMAL, NSEC and NSEC3 tree into single QP tree, there
were some comments still speaking about auxiliary NSEC tree.  These were
cleaned up and the logic when we pass the qp tree (write transaction) to
qpzone_addrdataset_inner() was changed to be more obvious that this is
needed only when we are adding NSEC records.

2 months agochg: dev: Exclude named.args.j2 and system test README files from license header...
Colin Vidal [Mon, 16 Mar 2026 10:36:25 +0000 (11:36 +0100)] 
chg: dev: Exclude named.args.j2 and system test README files from license header checks

Exclude named.args.j2 files from license header checks so named.args can
be generated from Jinja templates. Also exclude system test README files
from the license header checks.

Merge branch 'colin/reuse-namedargs' into 'main'

See merge request isc-projects/bind9!11690

2 months agoExcluse system test README files from license header checks
Colin Vidal [Mon, 16 Mar 2026 09:29:34 +0000 (10:29 +0100)] 
Excluse system test README files from license header checks

Exclude README* files in system test directories from license header
checks.

2 months agoExclude named.args.j2 files from license header checks
Colin Vidal [Fri, 13 Feb 2026 08:37:58 +0000 (09:37 +0100)] 
Exclude named.args.j2 files from license header checks

Exclude named.args.j2 files from license header checks so named.args can
be generated from Jinja templates.

2 months agofix: dev: Fix use-after-free in xfrin_recv_done
Ondřej Surý [Mon, 16 Mar 2026 10:06:28 +0000 (11:06 +0100)] 
fix: dev: Fix use-after-free in xfrin_recv_done

Move the LIBDNS_XFRIN_RECV_DONE probe execution before dns_xfrin_detach
in xfrin_recv_done.

Previously, dns_xfrin_detach was called before the trace probe, which
could free the xfr object.  Because the accessed member xfr->info is an
embedded array, the expression evaluates via pointer arithmetic rather
than a direct memory dereference.  Although this prevents a reliable
crash in practice, it technically remains a use-after-free issue.
Reorder the statements to ensure the transfer context is fully valid
when the probe executes.

Closes #5786

Merge branch '5786-fix-dtrace-after-free' into 'main'

See merge request isc-projects/bind9!11632

2 months agoFix use-after-free in xfrin_recv_done
Ondřej Surý [Wed, 4 Mar 2026 16:08:50 +0000 (17:08 +0100)] 
Fix use-after-free in xfrin_recv_done

Move the LIBDNS_XFRIN_RECV_DONE probe execution before dns_xfrin_detach
in xfrin_recv_done.

Previously, dns_xfrin_detach was called before the trace probe, which
could free the xfr object.  Because the accessed member xfr->info is an
embedded array, the expression evaluates via pointer arithmetic rather
than a direct memory dereference.  Although this prevents a reliable
crash in practice, it technically remains a use-after-free issue.
Reorder the statements to ensure the transfer context is fully valid
when the probe executes.

2 months agofix: dev: Fix OpenSSL 4 compatibility issue when calling X509_get_subject_name()
Arаm Sаrgsyаn [Mon, 16 Mar 2026 10:01:32 +0000 (10:01 +0000)] 
fix: dev: Fix OpenSSL 4 compatibility issue when calling X509_get_subject_name()

Starting from OpenSSL 4 the the X509_get_subject_name() function
returns a 'const' pointer to a name instead of a regular pointer.
Duplicate the name before operating on it, then free it.

Closes #5807

Merge branch '5807-openssl-4-X509_get_subject_name-compat-fix' into 'main'

See merge request isc-projects/bind9!11676

2 months agoOpenSSL 4 compatibility fix
Aram Sargsyan [Thu, 12 Mar 2026 13:10:38 +0000 (13:10 +0000)] 
OpenSSL 4 compatibility fix

Starting from OpenSSL 4 the the X509_get_subject_name() function
returns a 'const' pointer to a name instead of a regular pointer.
Duplicate the name before operating on it, then free it.

2 months agofix: dev: Fix couple of reference counting bugs
Ondřej Surý [Mon, 16 Mar 2026 09:48:13 +0000 (10:48 +0100)] 
fix: dev: Fix couple of reference counting bugs

Fix missing detach/free on error paths.

Merge branch 'ondrej/fix-reference-counting-errors' into 'main'

See merge request isc-projects/bind9!11666

2 months agoFix KASP key leaks on keystore lookup failure
Ondřej Surý [Sat, 14 Mar 2026 11:54:50 +0000 (12:54 +0100)] 
Fix KASP key leaks on keystore lookup failure

In both cfg_kasp_fromconfig() and cfg_kasp_builtinconfig(), the
newly allocated KASP key was not destroyed when the keystore
lookup failed.

2 months agoFix missing server socket detach in TLS accept error path
Ondřej Surý [Sat, 14 Mar 2026 11:54:27 +0000 (12:54 +0100)] 
Fix missing server socket detach in TLS accept error path

When TLS creation fails in tlslisten_acceptcb(), tlssock->server
was not detached before detaching tlssock itself.

2 months agoSimplify checkds_create() to return void
Ondřej Surý [Sat, 14 Mar 2026 11:53:51 +0000 (12:53 +0100)] 
Simplify checkds_create() to return void

Since memory allocation never fails in BIND 9, checkds_create() cannot
fail.  Change it to return void and use designated initializers,
removing error handling at all call sites.

2 months agoFix cb_args memory leak in ns_query() error path
Ondřej Surý [Sat, 14 Mar 2026 11:53:29 +0000 (12:53 +0100)] 
Fix cb_args memory leak in ns_query() error path

Initialize cb_args to NULL and free it in the cleanup path so it
is not leaked when the function fails after allocation.

2 months agoFix TSIG key and transport leaks in zone_notify() error paths
Ondřej Surý [Sat, 14 Mar 2026 11:53:03 +0000 (12:53 +0100)] 
Fix TSIG key and transport leaks in zone_notify() error paths

Two 'goto next' paths in zone_notify() skipped detaching the TSIG
key and transport, leaking them on TLS configuration failure and
when the destination address is disabled.

2 months agoFix memory leak in ixfr_commit() error path
Ondřej Surý [Sat, 14 Mar 2026 11:52:07 +0000 (12:52 +0100)] 
Fix memory leak in ixfr_commit() error path

The 'data' allocation was not freed when reaching the cleanup
label with an error result.

2 months agoFix memory context leak in dns_client_resolve() error path
Ondřej Surý [Sat, 14 Mar 2026 11:46:05 +0000 (12:46 +0100)] 
Fix memory context leak in dns_client_resolve() error path

Use isc_mem_putanddetach() instead of isc_mem_put() to properly
detach the attached memory context stored in resarg->mctx.

2 months agofix: usr: Fix a possible deadlock in RPZ processing
Ondřej Surý [Sat, 14 Mar 2026 12:43:13 +0000 (13:43 +0100)] 
fix: usr: Fix a possible deadlock in RPZ processing

The :iscman:`named` process could hang when processing a
maliciously crafted update for a response policy zone (RPZ).
This has been fixed.

Closes #5775

Merge branch '5775-rpz-del_name-deadlock-fix' into 'main'

See merge request isc-projects/bind9!11659

2 months agoFix a bug in rpz.c:del_name()
Aram Sargsyan [Wed, 11 Mar 2026 12:39:51 +0000 (12:39 +0000)] 
Fix a bug in rpz.c:del_name()

When the dns_qp_getname() call returns an error the del_name() function
just returns without cleaning up the trasnaction.

Instead of returning, jump to a new label 'done:' similar to the code
written in the add_nm() function.

2 months agochg: nil: Fix INSIST copy-paste error checking RADIX_V4 instead of RADIX_V6
Ondřej Surý [Sat, 14 Mar 2026 10:42:56 +0000 (11:42 +0100)] 
chg: nil: Fix INSIST copy-paste error checking RADIX_V4 instead of RADIX_V6

The INSIST in isc_radix_insert() checks node->data[RADIX_V4] and
node->node_num[RADIX_V4] twice due to a copy-paste error, never
verifying the RADIX_V6 fields.

Fix the second pair to check RADIX_V6.

Merge branch 'ondrej/fix-copy-paste-error-checking-RADIX_V4-instead-of-RADIX_V6' into 'main'

See merge request isc-projects/bind9!11664

2 months agoFix INSIST copy-paste error checking RADIX_V4 instead of RADIX_V6
Ondřej Surý [Wed, 11 Mar 2026 12:17:56 +0000 (13:17 +0100)] 
Fix INSIST copy-paste error checking RADIX_V4 instead of RADIX_V6

The INSIST in isc_radix_insert() checks node->data[RADIX_V4] and
node->node_num[RADIX_V4] twice due to a copy-paste error, never
verifying the RADIX_V6 fields.

Fix the second pair to check RADIX_V6.

2 months agofix: dev: Fix port validation rejecting valid port 65535
Ondřej Surý [Sat, 14 Mar 2026 10:02:10 +0000 (11:02 +0100)] 
fix: dev: Fix port validation rejecting valid port 65535

Three port validation checks use >= UINT16_MAX instead of > UINT16_MAX,
incorrectly rejecting port 65535 as out of range.  Port 65535 is a valid
TCP/UDP port number.  Other port checks in the same file already use the
correct > comparison.

Merge branch 'ondrej/fix-port-validation-rejecting-valid-port-65535' into 'main'

See merge request isc-projects/bind9!11665

2 months agoFix port validation rejecting valid port 65535
Ondřej Surý [Wed, 11 Mar 2026 12:18:01 +0000 (13:18 +0100)] 
Fix port validation rejecting valid port 65535

A few port validation checks use >= UINT16_MAX instead of > UINT16_MAX,
incorrectly rejecting port 65535 as out of range.  Port 65535 is a valid
TCP/UDP port number.  Other port checks in the same file already use the
correct > comparison.

2 months agofix: dev: Fix memory leak in dns_catz_options_setdefault() for zonedir
Ondřej Surý [Sat, 14 Mar 2026 09:10:37 +0000 (10:10 +0100)] 
fix: dev: Fix memory leak in dns_catz_options_setdefault() for zonedir

When defaults->zonedir is set, opts->zonedir is unconditionally
overwritten without freeing the previous value. This leaks memory
on every catalog zone update when zonedir defaults are configured.

Free the existing opts->zonedir before replacing it.

Merge branch 'ondrej/fix-memory-leak-in-dns_catz_options_setdefault' into 'main'

See merge request isc-projects/bind9!11660

2 months agoFix memory leak in dns_catz_options_setdefault() for zonedir
Ondřej Surý [Wed, 11 Mar 2026 12:17:32 +0000 (13:17 +0100)] 
Fix memory leak in dns_catz_options_setdefault() for zonedir

When defaults->zonedir is set, opts->zonedir is unconditionally
overwritten without freeing the previous value. This leaks memory
on every catalog zone update when zonedir defaults are configured.

Free the existing opts->zonedir before replacing it.

2 months agofix: usr: Fix intermittent named crashes during asynchronous zone operations
Ondřej Surý [Sat, 14 Mar 2026 06:45:57 +0000 (07:45 +0100)] 
fix: usr: Fix intermittent named crashes during asynchronous zone operations

Asynchronous zone loading and dumping operations occasionally dispatched tasks
to the wrong internal event loop. This threading violation triggered internal
safety assertions that abruptly terminated named. Strict loop affinity is now
enforced for these tasks, ensuring they execute on their designated threads
and preventing the crashes.

Closes #4882

Merge branch '4882-run-rndc-zone-commands-on-correct-loop' into 'main'

See merge request isc-projects/bind9!11655

2 months agoDispatch async work jobs from the correct loop
Ondřej Surý [Tue, 10 Mar 2026 17:25:54 +0000 (18:25 +0100)] 
Dispatch async work jobs from the correct loop

Refactor dns_loadctx_t and dns_dumpctx_t to use standard
ISC_REFCOUNT_DECL and ISC_REFCOUNT_IMPL macros, retiring the
redundant manual attach and detach implementations.

Introduce dns_loadctx_enqueue() and dns_dumpctx_enqueue() to
ensure compliance with the new strict loop affinity in
isc_work_enqueue(). If the current loop does not match the
target loop, the enqueue operation is safely bounced to the
correct thread via isc_async_run().

2 months agoEnforce isc_work enqueue loop affinity
Ondřej Surý [Tue, 10 Mar 2026 17:25:37 +0000 (18:25 +0100)] 
Enforce isc_work enqueue loop affinity

Add a REQUIRE(isc_loop() == loop) assertion to isc_work_enqueue()
to strictly enforce that work is enqueued from the loop it is
assigned to. This loudly prohibits cross-thread queue manipulation
before it inevitably turns into a concurrency debugging nightmare.

2 months agoUpdate BIND version for release v9.21.20
Michał Kępień [Fri, 13 Mar 2026 21:37:44 +0000 (22:37 +0100)] 
Update BIND version for release

2 months agonew: doc: Prepare documentation for BIND 9.21.20
Michał Kępień [Fri, 13 Mar 2026 21:36:00 +0000 (22:36 +0100)] 
new: doc: Prepare documentation for BIND 9.21.20

Merge branch 'michal/prepare-documentation-for-bind-9.21.20' into 'v9.21.20-release'

See merge request isc-private/bind9!959

2 months agoTweak and reword release notes
Michał Kępień [Fri, 13 Mar 2026 14:51:19 +0000 (15:51 +0100)] 
Tweak and reword release notes

2 months agoPrepare release notes for BIND 9.21.20
Michał Kępień [Fri, 13 Mar 2026 14:51:19 +0000 (15:51 +0100)] 
Prepare release notes for BIND 9.21.20

2 months agoGenerate changelog for BIND 9.21.20
Michał Kępień [Fri, 13 Mar 2026 14:51:19 +0000 (15:51 +0100)] 
Generate changelog for BIND 9.21.20

2 months ago[CVE-2026-3591] sec: usr: Fix a stack use-after-return flaw in SIG(0) handling code
Michał Kępień [Fri, 13 Mar 2026 13:31:40 +0000 (14:31 +0100)] 
[CVE-2026-3591] sec: usr: Fix a stack use-after-return flaw in SIG(0) handling code

A stack use-after-return flaw in SIG(0) handling code could enable ACL
bypass and/or assertion failures in certain circumstances. This flaw has
been fixed.

ISC would like to thank Mcsky23 for bringing this vulnerability to our
attention.

Closes isc-projects/bind9#5754

Merge branch '5754-stack-use-after-free-sig0' into 'v9.21.20-release'

See merge request isc-private/bind9!920

2 months agoFix stack Use-After-Return in SIG(0) handling
Ondřej Surý [Fri, 20 Feb 2026 08:46:32 +0000 (09:46 +0100)] 
Fix stack Use-After-Return in SIG(0) handling

The asynchronous SIG(0) handling improperly used srcaddr, and dstaddr
from the caller's stack and didn't attach to aclenv.  This could
possibly lead to ACL bypass as an invalid srcaddr could be matched or
possible assertion failure if the ACL environment would change between
the initial call and the SIG(0) processing due to the server
reconfiguration.  This has been fixed.

2 months agoAdd system test using SIG(0) and ACL matching
Ondřej Surý [Tue, 24 Feb 2026 18:20:14 +0000 (19:20 +0100)] 
Add system test using SIG(0) and ACL matching

This adds a system test to verify that asynchronous SIG(0)
validation correctly retains the ACL environment and network
addresses of the caller, preventing unauthorized ACL bypass
when evaluating match-clients and match-destinations.

2 months ago[CVE-2026-3119] sec: usr: Prevent a crash in code processing queries containing a...
Michał Kępień [Fri, 13 Mar 2026 12:44:33 +0000 (13:44 +0100)] 
[CVE-2026-3119] sec: usr: Prevent a crash in code processing queries containing a TKEY record

The :iscman:`named` process could terminate unexpectedly when
processing a correctly signed query containing a TKEY record.
This has been fixed.

ISC would like to thank Vitaly Simonovich for bringing this
vulnerability to our attention.

Closes isc-projects/bind9#5748

Merge branch '5748-security-tkey-delete-bug-fix' into 'v9.21.20-release'

See merge request isc-private/bind9!922

2 months agoFix a bug in dns_tkey_processquery()
Aram Sargsyan [Fri, 20 Feb 2026 11:18:52 +0000 (11:18 +0000)] 
Fix a bug in dns_tkey_processquery()

The 'keyname' variable could be used in the add_rdata_to_list()
call without being initialized. Make sure that 'keyname' is non-NULL
for all the cases that do not jump to the 'cleanup:' label.

2 months agoTest sending a TKEY query with deletion and unrecognized modes
Aram Sargsyan [Fri, 20 Feb 2026 13:48:17 +0000 (13:48 +0000)] 
Test sending a TKEY query with deletion and unrecognized modes

This new test sends two signed TKEY queries, one in delegation
mode and one in an unrecognized mode to check that named
correctly processes them.

Co-authored-by: Nicki Křížek <nicki@isc.org>
2 months ago[CVE-2026-3104] sec: usr: Fix memory leaks in code preparing DNSSEC proofs of non...
Michał Kępień [Fri, 13 Mar 2026 12:35:24 +0000 (13:35 +0100)] 
[CVE-2026-3104] sec: usr: Fix memory leaks in code preparing DNSSEC proofs of non-existence

An attacker controlling a DNSSEC-signed zone could trigger a memory leak
in the logic preparing DNSSEC proofs of non-existence, by creating more
than :any:`max-records-per-type` RRSIGs for NSEC records. These memory
leaks have been fixed.

ISC would like to thank Vitaly Simonovich for bringing this
vulnerability to our attention.

Closes isc-projects/bind9#5742

Merge branch '5742-fix-memory-leak-in-addnoqname-and-addclosest' into 'v9.21.20-release'

See merge request isc-private/bind9!913

2 months agoFix memory leak in QPcache addnoqname/addclosest mechanism
Ondřej Surý [Tue, 10 Feb 2026 15:16:25 +0000 (16:16 +0100)] 
Fix memory leak in QPcache addnoqname/addclosest mechanism

The attacker that controls DNSSEC-signed zone can trigger a memory leak
in the addnoqname() and/or addclosest() by creating more than
max-records-per-type RRSIG for any NSEC records.  The memory leaks have
been fixed.

2 months agoTest excessive RRSIG(NSEC) in signed zones
Nicki Křížek [Fri, 20 Feb 2026 15:35:29 +0000 (16:35 +0100)] 
Test excessive RRSIG(NSEC) in signed zones

Trigger a memory leak by adding extra RRSIG(NSEC) to a signed zone which
exceeds the resolver's configured max-records-per-type limit.

2 months ago[CVE-2026-1519] sec: usr: Fix unbounded NSEC3 iterations when validating referrals...
Michał Kępień [Fri, 13 Mar 2026 12:16:28 +0000 (13:16 +0100)] 
[CVE-2026-1519] sec: usr: Fix unbounded NSEC3 iterations when validating referrals to unsigned delegations

DNSSEC-signed zones may contain high iteration-count NSEC3 records,
which prove that certain delegations are insecure. Previously, a
validating resolver encountering such a delegation processed these
iterations up to the number given, which could be a maximum of 65,535.
This has been addressed by introducing a processing limit, set at 50.
Now, if such an NSEC3 record is encountered, the delegation will be
treated as insecure.

ISC would like to thank Samy Medjahed/Ap4sh for bringing this
vulnerability to our attention.

Closes isc-projects/bind9#5708

Merge branch '5708-confidential-nsec3-delegation-iteration-fix-fallback-to-insecure' into 'v9.21.20-release'

See merge request isc-private/bind9!935

2 months agoCheck RRset trust in validate_neg_rrset()
Matthijs Mekking [Tue, 3 Mar 2026 10:43:23 +0000 (11:43 +0100)] 
Check RRset trust in validate_neg_rrset()

In many places we only create a validator if the RRset has too low
trust (the RRset is pending validation, or could not be validated
before). This check was missing prior to validating negative response
data.

2 months agoCombine validator_log and marksecure
Matthijs Mekking [Tue, 3 Mar 2026 10:18:55 +0000 (11:18 +0100)] 
Combine validator_log and marksecure

When we mark RRsets as secure, we most of the time also log a debug
message. Combine this the same way as 'markanswer()' does.

2 months agoDon't verify already trusted rdatasets
Matthijs Mekking [Tue, 3 Mar 2026 10:17:25 +0000 (11:17 +0100)] 
Don't verify already trusted rdatasets

If we already marked an rdataset as secure (or it has even stronger
trust), there is no need to cryptographically verify it again.

2 months agoCheck iterations in isdelegation()
Matthijs Mekking [Tue, 3 Mar 2026 09:40:36 +0000 (10:40 +0100)] 
Check iterations in isdelegation()

When looking up an NSEC3 as part of an insecurity proof, check the
number of iterations. If this is too high, treat the answer as insecure
by marking the answer with trust level "answer", indicating that they
did not validate, but could be cached as insecure.

2 months agoReproducer for CVE-2026-1519
Nicki Křížek [Tue, 3 Feb 2026 17:25:04 +0000 (18:25 +0100)] 
Reproducer for CVE-2026-1519

When a validating resolver processes a delegation from a DNSSEC-signed
zone which uses too many NSEC3 iterations, it should cease the attempt
to validate due to an NSEC3 iteration limit being exceeded and fall back
to insecure.

2 months agochg: doc: Set up version for BIND 9.21.21
Michał Kępień [Thu, 12 Mar 2026 20:15:14 +0000 (21:15 +0100)] 
chg: doc: Set up version for BIND 9.21.21

Merge branch 'michal/set-up-version-for-bind-9.21.21' into 'main'

See merge request isc-projects/bind9!11680

2 months agoUpdate BIND version to 9.21.21-dev
Michał Kępień [Thu, 12 Mar 2026 20:11:01 +0000 (21:11 +0100)] 
Update BIND version to 9.21.21-dev

2 months agonew: ci: Add CI jobs to update RPM packages
Michał Kępień [Thu, 12 Mar 2026 19:48:58 +0000 (20:48 +0100)] 
new: ci: Add CI jobs to update RPM packages

New CI jobs are added to update the RPM packages in the context of a new
release. To be run only in tag pipelines.

Merge branch 'andoni/andoni/new-ci-add-job-to-update-rpms' into 'main'

See merge request isc-projects/bind9!11677

2 months agoAdd CI jobs to update RPM packages
Andoni Duarte Pintado [Thu, 5 Mar 2026 14:35:36 +0000 (15:35 +0100)] 
Add CI jobs to update RPM packages

New CI jobs are added to update the RPM packages in the context of a new
release. To be run only in tag pipelines.

2 months agonew: ci: Automatically manage early access tokens for distros
Petr Špaček [Thu, 12 Mar 2026 12:44:44 +0000 (12:44 +0000)] 
new: ci: Automatically manage early access tokens for distros

Merge branch 'pspacek/distros-tokens' into 'main'

See merge request isc-projects/bind9!11654

2 months agoFix a typo in job name
Michał Kępień [Thu, 12 Mar 2026 11:27:36 +0000 (12:27 +0100)] 
Fix a typo in job name

As hinted upon by the comment preceding it, the job preparing packager
notifications was (rather unsurprisingly) supposed to be called
"prepare-packager-notification".  Fix the typo in its name.

2 months agoDelete early access token when code is published
Petr Špaček [Tue, 10 Mar 2026 17:04:51 +0000 (18:04 +0100)] 
Delete early access token when code is published

Technically this is not necessary because the token expires in one week
after creation, and new code would have got there only one week before
the next public release, but better be safe than sorry.

Catch is, after_script gets executed even if a job fails or is
canceled. Delete distros token only if publication succeeded.

2 months agoGenerate token for early Git access in prepare-package-notification
Petr Špaček [Tue, 10 Mar 2026 17:01:16 +0000 (18:01 +0100)] 
Generate token for early Git access in prepare-package-notification

2 months agofix: nil: Set length in dns_rdata_in_dhcid structure
Mark Andrews [Thu, 12 Mar 2026 09:25:27 +0000 (20:25 +1100)] 
fix: nil: Set length in dns_rdata_in_dhcid structure

tostruct_in_dhcid was not setting the length field in the
dns_rdata_in_dhcid structure. This has been fixed.

Fixes #5796

Merge branch 'marka-set-dhcid-length' into 'main'

See merge request isc-projects/bind9!11668

2 months agoSet length in dns_rdata_in_dhcid structure
Mark Andrews [Wed, 11 Mar 2026 21:51:51 +0000 (08:51 +1100)] 
Set length in dns_rdata_in_dhcid structure

tostruct_in_dhcid was not setting the length field in the
dns_rdata_in_dhcid structure.

2 months agofix: doc: Expand blackhole description
Mark Andrews [Thu, 12 Mar 2026 01:08:34 +0000 (12:08 +1100)] 
fix: doc: Expand blackhole description

Clarify the behavior of negated addresses within the `blackhole`
statement to prevent common configuration misunderstandings.

Closes #5733

Merge branch '5733-expand-blackhole-description' into 'main'

See merge request isc-projects/bind9!11541

2 months agoExpand blackhole description
Ondřej Surý [Thu, 26 Feb 2026 16:13:04 +0000 (17:13 +0100)] 
Expand blackhole description

Clarify the behavior of negated addresses within the `blackhole`
statement to prevent common configuration misunderstandings.

2 months agofix: dev: Fix resquery reference imbalance on TCP connect failure
Ondřej Surý [Tue, 10 Mar 2026 17:38:37 +0000 (18:38 +0100)] 
fix: dev: Fix resquery reference imbalance on TCP connect failure

In fctx_query(), resquery_ref(query) is called before
dns_dispatch_connect() in anticipation of the resquery_connected()
callback consuming the reference.  When dns_dispatch_connect() fails
synchronously on TCP (e.g. from dns_transport_get_tlsctx() failing
in tcp_dispatch_connect()), the connect callback is never scheduled,
so the extra reference is never consumed.  This has been fixed.

Merge branch 'ondrej/fix-resquery-refcount' into 'main'

See merge request isc-projects/bind9!11640

2 months agoFix resquery reference imbalance on TCP connect failure
Ondřej Surý [Fri, 6 Mar 2026 16:06:24 +0000 (17:06 +0100)] 
Fix resquery reference imbalance on TCP connect failure

In fctx_query(), resquery_ref(query) is called before
dns_dispatch_connect() in anticipation of the resquery_connected()
callback consuming the reference.

When dns_dispatch_connect() fails synchronously on TCP (e.g. from
dns_transport_get_tlsctx() failing in tcp_dispatch_connect()), the
connect callback is never scheduled, so the extra reference is never
consumed.  The error path then tears down the query via manual cleanup
(isc_mem_put) without going through the refcount destructor, leaving
the reference imbalanced.

Fix by dropping the extra reference on the error path, just after
dns_dispatch_done() which cleans up the dispatch entry.

2 months agoFix copy-paste typos in dns_dispatchmgr comments
Ondřej Surý [Fri, 6 Mar 2026 16:06:16 +0000 (17:06 +0100)] 
Fix copy-paste typos in dns_dispatchmgr comments

The v6ports and nv6ports fields are documented as "available ports
for IPv4" instead of "IPv6".

2 months agochg: test: Disable statschannel RTT tests on FreeBSD
Nicki Křížek [Tue, 10 Mar 2026 15:07:54 +0000 (16:07 +0100)] 
chg: test: Disable statschannel RTT tests on FreeBSD

These tests rely on somewhat precise timing, as they test that answers
arrive in a particular latency bucket within the statschannel stats.
These tests are affected by various timing and network issues on our
FreeBSD CI runners and the results are very unstable. Skip these on
FreeBSD entirely.

Merge branch 'nicki/disable-statschannel-rtt-on-freebsd' into 'main'

See merge request isc-projects/bind9!11651

2 months agoDisable statschannel RTT tests on FreeBSD
Nicki Křížek [Tue, 10 Mar 2026 12:35:56 +0000 (13:35 +0100)] 
Disable statschannel RTT tests on FreeBSD

These tests rely on somewhat precise timing, as they test that answers
arrive in a particular latency bucket within the statschannel stats.
These tests are affected by various timing and network issues on our
FreeBSD CI runners and the results are very unstable. Skip these on
FreeBSD entirely.

2 months agofix: test: Bump xfer timeout to 30 seconds
Michal Nowak [Tue, 10 Mar 2026 13:24:40 +0000 (14:24 +0100)] 
fix: test: Bump xfer timeout to 30 seconds

Closes #5792

Merge branch '5792-xfer-test-bump-timeout' into 'main'

See merge request isc-projects/bind9!11649

2 months agoBump xfer timeout to 30 seconds
Michal Nowak [Tue, 10 Mar 2026 10:42:38 +0000 (11:42 +0100)] 
Bump xfer timeout to 30 seconds

Enabling ans6 responses and xfr-and-reconfig zone reload sometimes takes
more time on FreeBSD than the default timeout allows; bump it to 30
seconds.

2 months agochg: ci: Re-enable shotgun runs for nightlies and tags
Nicki Křížek [Mon, 9 Mar 2026 15:48:24 +0000 (16:48 +0100)] 
chg: ci: Re-enable shotgun runs for nightlies and tags

The recent rewrite of DNS Shotgun infrastructure might've improved the
prior instability. In order to evaluate, re-enable the regular shotgun
pipelines to gather data.

Merge branch 'nicki/ci-shotgun-enable' into 'main'

See merge request isc-projects/bind9!11506

2 months agoRe-enable shotgun runs
Nicki Křížek [Thu, 29 Jan 2026 10:10:10 +0000 (11:10 +0100)] 
Re-enable shotgun runs

Make the shotgun pipelines on-demand with 5 samples (and no retry) by
defautl. MRs are compared to their base, while other sources (triggers,
web, schedule...) are compared against the latest released version.

For schedules, run the shotgun pipelines on Monday morning only, but
with the increased number of samples. This should provide useful data
without too many false positives.

2 months agochg: test: Log dnspython queries after .to_wire() is called
Nicki Křížek [Mon, 9 Mar 2026 12:12:14 +0000 (13:12 +0100)] 
chg: test: Log dnspython queries after .to_wire() is called

Some dns message modifications like TSIG happen only after .to_wire() is
called on the message. To ensure there isn't a discrepancy between what
has been logged and what has been sent, log the query after
dns.query.udp() is executed (which calls .to_wire() on the message).

Merge branch 'nicki/pytest-log-querymsg' into 'main'

See merge request isc-projects/bind9!11623

2 months agoLog dnspython queries after .to_wire() is called
Nicki Křížek [Tue, 3 Mar 2026 12:37:14 +0000 (13:37 +0100)] 
Log dnspython queries after .to_wire() is called

Some dns message modifications like TSIG happen only after .to_wire() is
called on the message. To ensure there isn't a discrepancy between what
has been logged and what has been sent, log the query after
dns.query.udp() is executed (which calls .to_wire() on the message).

Co-Authored-By: Štěpán Balážik <stepan@isc.org>
3 months agochg: dev: Replace lock keyfile hashmap with lock pool
Alessio Podda [Fri, 6 Mar 2026 14:06:13 +0000 (14:06 +0000)] 
chg: dev: Replace lock keyfile hashmap with lock pool

Kasp used a lock per zone origin in order to prevent concurrent access
to keyfiles. This lead to substantial memory consumption in the case of
authoritative servers with many small zones, as lots of locks need to be
allocated.

Since the number of keyfile locks taken cannot exceed the number of
helper threads, it makes more sense to use a lock pool of fixed size
keyed by the hash of the origin name, leading to memory savings.

Merge branch 'alessio/keyfile-lock-pool' into 'main'

See merge request isc-projects/bind9!11633

3 months agoReplace lock keyfile hashmap with lock pool
Alessio Podda [Fri, 27 Feb 2026 12:33:55 +0000 (13:33 +0100)] 
Replace lock keyfile hashmap with lock pool

Kasp used a lock per zone origin in order to prevent concurrent access
to keyfiles. This lead to substantial memory consumption in the case of
authoritative servers with many small zones, as lots of locks need to be
allocated.

Since the number of keyfile locks taken cannot exceed the number of
helper threads, it makes more sense to use a lock pool of fixed size
keyed by the hash of the origin name, leading to memory savings.

3 months agonew: ci: Add a job updating the Docker image for a specific release
Andoni Duarte [Fri, 6 Mar 2026 09:24:32 +0000 (09:24 +0000)] 
new: ci: Add a job updating the Docker image for a specific release

Add a new CI job that updates the Docker image for a specific release.

Merge branch 'andoni/update-bind9-docker-images-for-release' into 'main'

See merge request isc-projects/bind9!11564

3 months agoAdd job to update BIND9 Docker images for release
Andoni Duarte Pintado [Thu, 19 Feb 2026 09:04:51 +0000 (10:04 +0100)] 
Add job to update BIND9 Docker images for release

This commit adds a new CI job to update the BIND9 version in the
isc-projects/bind9-docker project, which will cause the docker images
to be rebuilt for release. Previously a manual step.

A notification is sent to the relevant Mattermost channel.

3 months agofix: usr: Fix setting retire in dns_keymgr_key_init
Matthijs Mekking [Thu, 5 Mar 2026 10:49:45 +0000 (10:49 +0000)] 
fix: usr: Fix setting retire in dns_keymgr_key_init

A wrong-variable bug in `dns_keymgr_key_init()` causes the DNSSEC key inactive
time to never be read. This means the key state is retracting zone signatures
where it should have, delaying the key rollover.

ISC would like to thank Naresh Kandula Parmar (Nottiboy) for reporting this.

Closes #5774

Merge branch '5774-fix-setting-retire' into 'main'

See merge request isc-projects/bind9!11624

3 months agoFix setting retire in dns_keymgr_key_init
Mark Andrews [Wed, 4 Mar 2026 04:14:14 +0000 (15:14 +1100)] 
Fix setting retire in dns_keymgr_key_init

The wrong variable was passed to dst_key_gettime when attempting
to set retire.

3 months agochg: usr: Introduce max-delegation-servers configuration option
Ondřej Surý [Wed, 4 Mar 2026 16:25:28 +0000 (17:25 +0100)] 
chg: usr: Introduce max-delegation-servers configuration option

Make the maximum number of processed delegation nameservers configurable
via the new 'max-delegation-servers' option (default: 13), replacing the
hardcoded NS_PROCESSING_LIMIT (20).

The default is reduced to 13 to precisely match the maximum number of
root servers that can fit into a classic 512-byte UDP payload.  This
provides a natural, historically sound cap that mitigates resource
exhaustion and amplification attacks from artificially inflated or
misconfigured delegations.

The configuration option is strictly bounded between 1 and 100 to ensure
resolver stability.

Merge branch 'ondrej/make-NS_PROCESSING_LIMIT-configurable' into 'main'

See merge request isc-projects/bind9!11607

3 months agoIntroduce max-delegation-servers configuration option
Ondřej Surý [Thu, 26 Feb 2026 09:21:13 +0000 (10:21 +0100)] 
Introduce max-delegation-servers configuration option

Make the maximum number of processed delegation nameservers configurable
via the new 'max-delegation-servers' option (default: 13), replacing the
hardcoded NS_PROCESSING_LIMIT (20).

The default is reduced to 13 to precisely match the maximum number of
root servers that can fit into a classic 512-byte UDP payload.  This
provides a natural, historically sound cap that mitigates resource
exhaustion and amplification attacks from artificially inflated or
misconfigured delegations.

The configuration option is strictly bounded between 1 and 100 to ensure
resolver stability.

3 months agonew: ci: Add LLVM 22
Michal Nowak [Wed, 4 Mar 2026 11:11:10 +0000 (12:11 +0100)] 
new: ci: Add LLVM 22

Merge branch 'mnowak/llvm-22' into 'main'

See merge request isc-projects/bind9!11627

3 months agoIgnore clang-format-22 reformatting commits
Michal Nowak [Wed, 4 Mar 2026 09:58:15 +0000 (10:58 +0100)] 
Ignore clang-format-22 reformatting commits

3 months agoUse clang-format-22 to update formatting
Michal Nowak [Wed, 4 Mar 2026 09:56:41 +0000 (10:56 +0100)] 
Use clang-format-22 to update formatting

3 months agoAdd LLVM 22
Michal Nowak [Tue, 24 Feb 2026 19:56:54 +0000 (20:56 +0100)] 
Add LLVM 22

3 months agofix: ci: Fix .respdiff-recent-named anchor to work when the ABI changes
Štěpán Balážik [Tue, 3 Mar 2026 06:50:22 +0000 (06:50 +0000)] 
fix: ci: Fix .respdiff-recent-named anchor to work when the ABI changes

Previously, on 9.20 and 9.18, both builds (reference and the version
being tested) would use the same .so files which lead to a crash if the
ABI changed.

Use `git worktree` to get completely separate build environment for the
reference version.

This is not a problem on 9.21 as Meson is smart and covers this mistake,
but apply the fix to it as well for consistency.

This also is not a problem on non-MR pipelines: the latest released version
was used as a reference there, so the .so versions would differ.

See the 9.20 pre-backport branch and the jobs:

- Broken: https://gitlab.isc.org/isc-projects/bind9/-/jobs/6951217
- Fixed: https://gitlab.isc.org/isc-projects/bind9/-/jobs/6951220

Merge branch 'stepan/respdiff-fails-on-abi-breakage' into 'main'

See merge request isc-projects/bind9!11616

3 months agoFix .respdiff-recent-named anchor to work when the ABI changes
Štěpán Balážik [Mon, 2 Mar 2026 14:54:53 +0000 (15:54 +0100)] 
Fix .respdiff-recent-named anchor to work when the ABI changes

Previously, on 9.20 and 9.18, both builds (reference and the version
being tested) would use the same .so files which lead to a crash if the
ABI changed.

Use `git worktree` to get completely separate build environment for the
reference version.

This is not a problem on 9.21 as Meson is smart and covers this mistake,
but apply the fix to it as well for consistency.

3 months agofix: usr: Resolve "key defined in view is not found"
Colin Vidal [Sun, 1 Mar 2026 08:21:03 +0000 (09:21 +0100)] 
fix: usr: Resolve "key defined in view is not found"

A recent change in `2956e4fc45b3c2142a3351682d4200647448f193` hardened the `key` name check when used in `primaries` to immediately reject the configuration if the key was not defined (rather than only checking whether the key name was correctly formed). However, the change introduced a regression that prevented the use of a `key` defined in a view. This is now fixed.

Merge branch '5761-key-view' into 'main'

See merge request isc-projects/bind9!11588

3 months agoadd checkconf test with key defined inside a view
Colin Vidal [Mon, 23 Feb 2026 18:36:32 +0000 (19:36 +0100)] 
add checkconf test with key defined inside a view

A configuration where a key was defined inside a view, then used in a
`primary` statement wasn't covered. This is now fixed.

3 months agocheckconf: check key existence in views
Colin Vidal [Mon, 23 Feb 2026 18:36:19 +0000 (19:36 +0100)] 
checkconf: check key existence in views

Commit `2956e4fc45b3c2142a3351682d4200647448f193` hardened the `key`
name check when used in `primaries` to reject the configuration if
the key was not defined, rather than simply checking whether the
key name was correctly formed.

However, the key name check didn't include the view configuration,
causing keys not to be recognized if they were defined inside the
view and not at the global level.  This regression is now fixed.

3 months agochg: doc: Update Sphinx-related Python packages
Michał Kępień [Fri, 27 Feb 2026 15:52:20 +0000 (16:52 +0100)] 
chg: doc: Update Sphinx-related Python packages

Update Sphinx-related Python packages to their current versions pulled
in by "pip install sphinx-rtd-theme" run in a fresh Debian "bookworm"
container.

Merge branch 'michal/update-sphinx-related-python-packages' into 'main'

See merge request isc-projects/bind9!11612

3 months agoUpdate Sphinx-related Python packages
Michał Kępień [Fri, 27 Feb 2026 13:10:26 +0000 (14:10 +0100)] 
Update Sphinx-related Python packages

Update Sphinx-related Python packages to their current versions pulled
in by "pip install sphinx-rtd-theme" run in a fresh Debian "bookworm"
container.

3 months agoMerge tag 'v9.21.19'
Michał Kępień [Fri, 27 Feb 2026 12:19:34 +0000 (12:19 +0000)] 
Merge tag 'v9.21.19'

3 months agoUpdate BIND version for release v9.21.19
Michał Kępień [Thu, 26 Feb 2026 20:52:53 +0000 (21:52 +0100)] 
Update BIND version for release

3 months agonew: doc: Prepare documentation for BIND 9.21.19
Michał Kępień [Thu, 26 Feb 2026 20:49:29 +0000 (21:49 +0100)] 
new: doc: Prepare documentation for BIND 9.21.19

Merge branch 'michal/prepare-documentation-for-bind-9.21.19' into 'v9.21.19-release'

See merge request isc-private/bind9!930

3 months agoAdd release note for GL !11563
Michał Kępień [Thu, 26 Feb 2026 20:17:47 +0000 (21:17 +0100)] 
Add release note for GL !11563

3 months agoReorder release notes
Michał Kępień [Thu, 26 Feb 2026 20:17:47 +0000 (21:17 +0100)] 
Reorder release notes

3 months agoTweak and reword release notes
Michał Kępień [Thu, 26 Feb 2026 20:17:47 +0000 (21:17 +0100)] 
Tweak and reword release notes

3 months agoPrepare release notes for BIND 9.21.19
Michał Kępień [Thu, 26 Feb 2026 20:17:47 +0000 (21:17 +0100)] 
Prepare release notes for BIND 9.21.19

3 months agoGenerate changelog for BIND 9.21.19
Michał Kępień [Thu, 26 Feb 2026 20:17:47 +0000 (21:17 +0100)] 
Generate changelog for BIND 9.21.19

3 months agonew: usr: Provide response round-trip time (RTT) counters via statistics channel
Arаm Sаrgsyаn [Thu, 26 Feb 2026 17:21:24 +0000 (17:21 +0000)] 
new: usr: Provide response round-trip time (RTT) counters via statistics channel

Previously, :iscman:`named` provided RTT counters for outgoing
queries performed by itself during name resolutions. Now this
has been improved to provide more granular counters (histogram),
and to also provide RTT counters for the incoming queries.

Closes #5279

Merge branch '5279-query-rtt-isc_histo_t-statistics' into 'main'

See merge request isc-projects/bind9!11508