]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
5 days ago[9.16] fix: ci: Drop ccache support from CI bind-9.16
Michal Nowak [Thu, 28 May 2026 13:47:00 +0000 (15:47 +0200)] 
[9.16] fix: ci: Drop ccache support from CI

The population of the compile cache is so slow, that a BIND 9 build can
take 20 minutes.

Assisted-by: Claude:claude-opus-4-7
Backport of MR !12127

Merge branch 'backport-mnowak/drop-ccache-support-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!12130

5 days agoDrop ccache support from CI 12130/head
Michal Nowak [Thu, 28 May 2026 10:24:14 +0000 (12:24 +0200)] 
Drop ccache support from CI

The population of the compile cache is so slow, that a BIND 9 build can
take 20 minutes.

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit cbc8664567e374dc305c88f8ffd55c8597e14155)

13 days agoMerge branch 'security-bind-9.16' into bind-9.16
Michał Kępień [Wed, 20 May 2026 13:53:21 +0000 (15:53 +0200)] 
Merge branch 'security-bind-9.16' into bind-9.16

3 weeks ago[9.16] Set RUNNER_SCRIPT_TIMEOUTs
Michal Nowak [Tue, 12 May 2026 19:03:46 +0000 (21:03 +0200)] 
[9.16] Set RUNNER_SCRIPT_TIMEOUTs

Backport of MR !11750

Merge branch 'backport-mnowak/set-script-timeouts-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!12008

3 weeks agoGet some useful data out of respdiff even in case of a failure
Michal Nowak [Mon, 11 May 2026 17:20:23 +0000 (19:20 +0200)] 
Get some useful data out of respdiff even in case of a failure

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit 7928127d8b143b30001083cd106cf3519cd9626d)
(cherry picked from commit 3b8e943cf57ac8a5e812c155e7b5c1f0d1b18265)

3 weeks agoPass -r option to respdiff.sh
Michal Nowak [Mon, 11 May 2026 17:19:53 +0000 (19:19 +0200)] 
Pass -r option to respdiff.sh

Tell respdiff.sh where to find the respdiff Python tools (msgdiff.py,
diffsum.py, ...) so the in-tree copy from bind9-qa is used.

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit 4f410ee1e6b7f5a8cceb3331aa5be3dc74680aee)
(cherry picked from commit 0f63c1571807eb8762d3893d3a24299dd0185aab)

3 weeks agoSet RUNNER_SCRIPT_TIMEOUTs
Michal Nowak [Wed, 25 Mar 2026 12:31:49 +0000 (13:31 +0100)] 
Set RUNNER_SCRIPT_TIMEOUTs

Sometimes jobs can get stuck and be terminated by GitLab, leaving us
without artefacts that could contain useful information about why the
job got stuck.

Assisted-by: Claude:claude-opus-4-7
(cherry picked from commit e3d2f5ad948f977df67a349601bd4743f6777539)
(cherry picked from commit 69ca6ee3664f5fe25e03c0e30c14867a9e8bfc52)

3 weeks ago[9.16] chg: ci: Mark merged security fixes as "Not released yet"
Michał Kępień [Thu, 7 May 2026 16:15:02 +0000 (18:15 +0200)] 
[9.16] chg: ci: Mark merged security fixes as "Not released yet"

Adjust the triggering rules for the "merged-metadata" CI job so that
merge requests merged into security-* branches are automatically
assigned to the "Not released yet" milestone, just like merge requests
targeting public branches.  This enables merge requests containing
security fixes to be correctly processed by release automation scripts.

Backport of MR !11984

Merge branch 'backport-pspacek/extend-not-released-yet-milestone-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!11989

3 weeks agoMark merged security fixes as "Not released yet"
Petr Špaček [Tue, 5 May 2026 13:04:36 +0000 (15:04 +0200)] 
Mark merged security fixes as "Not released yet"

Adjust the triggering rules for the "merged-metadata" CI job so that
merge requests merged into security-* branches are automatically
assigned to the "Not released yet" milestone, just like merge requests
targeting public branches.  This enables merge requests containing
security fixes to be correctly processed by release automation scripts.

(cherry picked from commit afdf7bed602b5518b23409c1a140a797c4e6de34)

3 weeks ago[9.16] fix: dev: Pass empty string instead of NULL to ns_client_dumpmessage()
Ondřej Surý [Wed, 6 May 2026 11:39:17 +0000 (13:39 +0200)] 
[9.16] fix: dev: Pass empty string instead of NULL to ns_client_dumpmessage()

Pass "" instead of NULL to ns_client_dumpmessage() to get the log message printed.

Backport of MR !1022

Merge branch 'backport-ondrej/fix-ns_client_dumpmessage-calls-9.16' into 'security-bind-9.16'

See merge request isc-private/bind9!1025

3 weeks agoPass empty string instead of NULL to ns_client_dumpmessage()
Ondřej Surý [Wed, 6 May 2026 08:12:35 +0000 (10:12 +0200)] 
Pass empty string instead of NULL to ns_client_dumpmessage()

The two new call sites added by the CLASS-validation work passed NULL
as the reason, but ns_client_dumpmessage() bails out early on a NULL
reason — so the message dump never happened. The intent was to dump
the message and let the follow-up ns_client_log() carry the reason
text, so pass "" to suppress the prefix without short-circuiting the
dump.

(cherry picked from commit 8af39c360407a92ef31bf233b9df760d1bb9fb5f)

3 weeks ago[9.16] [CVE-2026-5946] sec: usr: Disable recursion, UPDATE, and NOTIFY for non-IN...
Ondřej Surý [Wed, 6 May 2026 07:33:37 +0000 (09:33 +0200)] 
[9.16] [CVE-2026-5946] sec: usr: Disable recursion, UPDATE, and NOTIFY for non-IN views

Recursion, dynamic updates (UPDATE), and zone change notifications
(NOTIFY) are now disabled for views with a class other than IN
(such as CHAOS or HESIOD); authoritative service for non-IN zones
(e.g. version.bind in class CHAOS) continues to work as before.
Servers configured with recursion yes in a non-IN view will log a
warning at startup, and named-checkconf flags the same condition.
UPDATE and NOTIFY messages that specify the meta-classes ANY or NONE
in the question section are now rejected with FORMERR.

This addresses a set of closely related security issues collectively
identified as CVE-2026-5946. ISC would like to thank Mcsky23 for
bringing these issues to our attention.

Backport of https://gitlab.isc.org/isc-private/bind9/-/merge_requests/936

Merge branch 'each-security-disable-chaos-recursion-security-bind-9.16' into 'security-bind-9.16'

See merge request isc-private/bind9!1020

3 weeks agoSkip "deny-answer-address" for non-IN addresses
Evan Hunt [Tue, 17 Mar 2026 20:24:43 +0000 (13:24 -0700)] 
Skip "deny-answer-address" for non-IN addresses

Ensure that we don't attempt an ACL match for answer addresses
when handling a class-CHAOS zone. This is an additional line of
defense for YWH-PGM40640-74.

(cherry picked from commit 4cd3d8e6d866143ddc62df821a1007bf3ee7f083)
(cherry picked from commit fa60101e910346e64fa2a684b903fbcb84d8243b)

3 weeks agoReject meta-classes in UPDATE and NOTIFY messages
Mark Andrews [Tue, 3 Mar 2026 23:00:56 +0000 (10:00 +1100)] 
Reject meta-classes in UPDATE and NOTIFY messages

NOTIFY and UPDATE messages must specify a data class in the
QUESTION/ZONE section.  NONE and ANY are meta-classes and not
appropriate here.  Return FORMERR if either is used.

Rejecting messages with a query class of NONE addresses YWH-PGM40640-72,
YWH-PGM40640-82, and YWH-PGM40640-83.  Rejecting messages with a query
class of ANY addresses YWH-PGM40640-87, YWH-PGM40640-88, and
YWH-PGM40640-117.

Fixes: isc-projects/bind9#5778
Fixes: isc-projects/bind9#5782
Fixes: isc-projects/bind9#5783
Fixes: isc-projects/bind9#5797
Fixes: isc-projects/bind9#5798
Fixes: isc-projects/bind9#5853
(cherry picked from commit 7de5160517ae69196d1c323b8627b267cdd10761)
(cherry picked from commit 3c44de9e6252ec1c7742ef02ecc0d6cbf1cde5e9)

3 weeks agoValidate DNS message CLASS early in request processing
Ondřej Surý [Wed, 4 Mar 2026 09:46:58 +0000 (10:46 +0100)] 
Validate DNS message CLASS early in request processing

Reject requests with unsupported or misused CLASS values before
further processing.  Only IN, CH, HS, RESERVED0 (for DNS Cookies),
ANY (for TKEY negotiation), and NONE (for DNS UPDATE) are accepted;
all other classes return NOTIMP.  Misuse of NONE or ANY outside
their allowed contexts returns FORMERR.

This adds further protection against bugs of the same general class
as YWH-PGM40640-70 and YWH-PGM40640-73.

(cherry picked from commit d41865a458b9ecd76be4097ac1bea1005cad72db)
(cherry picked from commit 1c8016c91c3674929f87cbe7ad09f3670e05ad4e)

3 weeks agoDisable UPDATE and NOTIFY for non-IN classes
Evan Hunt [Wed, 4 Mar 2026 21:24:52 +0000 (13:24 -0800)] 
Disable UPDATE and NOTIFY for non-IN classes

Return NOTIMP for UPDATE and NOTIFY requests received for views with a
class other than IN.  Only QUERY is now supported for non-IN views such
as CHAOS.

When running dns dns_rdata_tostruct() with types that are only defined
for class IN, ensure that the class is correct before proceeding.

Add an assertion that any zone being updated is of class IN. (Note
that previously, a DLZ zone could have its class value set incorrectly
to NONE; this has been fixed.)

This addresses YWH-PGM40640-70 and YWH-PGM40640-73 (as well as any
similar problems that might have occurred in the future) by minimizing
the code paths that can be reached by rdata classes other than IN, so it
is safe for the implementation to assume that rdatatypes that are only
defined for class IN, such as SVCB or WKS, have been parsed and
validated, and not accepted as unknown/opaque data.

Fixes: isc-projects/bind9#5777
Fixes: isc-projects/bind9#5779
(cherry picked from commit 9ae24c32bec16c0f64225ef04f34670018bf0765)
(cherry picked from commit a2ca2408b3ff031c426c5dc785f550c9d30bf4aa)

3 weeks agoDisable recursion for non-IN classes
Evan Hunt [Tue, 3 Mar 2026 22:00:38 +0000 (14:00 -0800)] 
Disable recursion for non-IN classes

Force recursion off, and set allow-recursion/allow-recursion-on ACLs
to none, for views with a class other than IN. Log a configuration
warning if recursion is explicitly enabled for a non-IN view.

This addresses YWH-PGM40640-74 and YWH-PGM40640-75 by preventing any
attempt at recursive processing in a class-CHAOS view, ensuring that
server addresses used for recursive queries and received in recursive
responses are of the expected format.

Fixes: isc-projects/bind9#5780
Fixes: isc-projects/bind9#5781
(cherry picked from commit 70532a37a1aec761e8a12444852866ce9d9d5fcc)
(cherry picked from commit cf0d5a4e385525e21f2ae39098b1ab90c1137a2a)

4 weeks ago[9.16] [CVE-2026-3039] sec: usr: Fix GSS-API resource leak
Ondřej Surý [Fri, 1 May 2026 06:41:39 +0000 (08:41 +0200)] 
[9.16] [CVE-2026-3039] sec: usr: Fix GSS-API resource leak

Fixed a memory leak where each GSS-API TKEY negotiation leaked a security context inside the GSS library. An unauthenticated attacker could exhaust server memory by sending repeated TKEY queries to a server with tkey-gssapi-keytab configured. The leaked memory was allocated by the GSS library, bypassing BIND's memory accounting.

Multi-round GSS-API negotiation (GSS_S_CONTINUE_NEEDED) is now rejected, as BIND never supported it correctly and Kerberos/SPNEGO completes in a single round.

Also implemented missing RFC 3645 requirement: the client now verifies that mutual authentication and integrity flags are granted by the GSS-API mechanism (Section 3.1.1).

Closes: https://gitlab.isc.org/isc-projects/bind9/-/issues/5752
Backport of !965

Merge branch 'backport-5752-fix-memory-leak-in-TKEY-negotiation-9.16' into 'security-bind-9.16'

See merge request isc-private/bind9!976

4 weeks agoFix output token and GSS context leaks in TKEY/GSS-API error paths
Ondřej Surý [Fri, 10 Apr 2026 10:51:31 +0000 (12:51 +0200)] 
Fix output token and GSS context leaks in TKEY/GSS-API error paths

In dst_gssapi_acceptctx(), rename outtoken to outtokenp (matching BIND
convention for output pointer parameters) and free the allocated output
token buffer on error in the cleanup path.

In process_gsstkey(), route the empty-principal error path through
cleanup via CLEANUP() instead of returning early, so that the output
token, GSS context, and TSIG key are all freed consistently by the
existing cleanup block.

(cherry picked from commit f2240d2d06a1a68b622bd6b00a52c6fe4274426d)

4 weeks agoFix GSS-API context leak in TKEY negotiation
Ondřej Surý [Tue, 17 Mar 2026 23:10:35 +0000 (00:10 +0100)] 
Fix GSS-API context leak in TKEY negotiation

Reject multi-round GSS-API negotiation (GSS_S_CONTINUE_NEEDED) in
dst_gssapi_acceptctx().  Each call to gss_accept_sec_context()
allocates a context inside the GSS library; without this fix, the
context handle was passed back to process_gsstkey() which did not
store it persistently, leaking it on every incomplete negotiation.

An unauthenticated attacker could exhaust server memory by sending
repeated TKEY queries with GSSAPI tokens, each leaking one GSS
context.  The leaked memory is allocated by the GSS library via
malloc(), bypassing BIND's memory accounting.

In practice, Kerberos/SPNEGO (the only mechanism used with BIND)
completes in a single round, so rejecting continuation does not
affect real-world deployments.  See RFC 3645 Section 4.1.3.

(cherry picked from commit 3883058bf284de2889e4e3676767e58ad91a0ae3)

4 weeks ago[9.16] [CVE-2026-3592] sec: usr: Limit resolver server list size
Colin Vidal [Thu, 30 Apr 2026 18:49:41 +0000 (20:49 +0200)] 
[9.16] [CVE-2026-3592] sec: usr: Limit resolver server list size

When resolving a domain with many nameservers that share overlapping IP addresses (e.g., 10 NS records all pointing at the same set of addresses), BIND could previously waste time querying duplicate addresses and build up excessively large server lists. Deduplicate addresses in the resolver's server list so that each unique IP is only queried once per resolution attempt, regardless of how many NS records point to it and cap the number of addresses stored per nameserver name to 6 (combined A and AAAA), preventing memory and CPU overhead from domains with unusually large NS/glue sets.

Closes isc-projects/bind9#5641

Backport of !909

Merge branch 'backport-5641-selfpointedglue-9.16' into 'security-bind-9.16'

See merge request isc-private/bind9!956

4 weeks agoRemove duplicate addresses from the resolver SLIST
Colin Vidal [Wed, 4 Feb 2026 09:18:42 +0000 (10:18 +0100)] 
Remove duplicate addresses from the resolver SLIST

The SLIST (essentially `fctx->finds`, forwarders and dual-stack
alternatives aside) can have duplicate server addresses when multiple
in-domain nameservers share the same IP addresses:

  sub.example.          NS      ns1.sub.example.
  sub.example.          NS      ns2.sub.example.
  ns1.sub.example.      A       1.2.3.4
  ns1.sub.example.      A       5.6.7.8
  ns2.sub.example.      A       1.2.3.4
  ns2.sub.example.      A       5.6.7.8

If both 1.2.3.4 and 5.6.7.8 fail to return a valid answer, the resolver
would query each address twice.

The problem is fixed by replacing the two-phase server selection (sort
each find list by SRTT, sort finds by head SRTT) with a single linear
scan in nextaddress() that finds the lowest-SRTT unmarked, non-duplicate
address across all find lists.

The old approach had a correctness bug: after sorting, the resolver
picked the next address from the "current" find list rather than
globally.  For example, with find lists [1, 15, 26] and [3, 4, 5], the
second pick would be SRTT 15 instead of the correct SRTT 3.

The new approach is both simpler and correct: each call to nextaddress()
walks all addresses, skips marked and duplicate entries, and returns the
one with the lowest SRTT.  While this walk is repeated for each server
attempt, it operates on a small bounded list and is negligible compared
to the network I/O of querying the server.

(cherry picked from commit ced6b66fafa1badfd044d569a6d3cfbdb600f5a7)

4 weeks agoLimit the number of addresses returned per ADB find
Colin Vidal [Thu, 5 Feb 2026 08:46:01 +0000 (09:46 +0100)] 
Limit the number of addresses returned per ADB find

Add a hard limit on the number of addresses that ADB returns from a
single NS lookup (dns_adbfind_t).  This mitigates a flood attack
where an attacker controls a zone with many addresses for a
nameserver, each returning an invalid response.  The global
max-query count (default 50) also limits this, but significant harm
can be done before that limit is reached.

The default limit is now 6 (v4 and/or v6) addresses for an ADB find (so,
ADB looking up for A/AAAA addresses of a name server name).

(cherry picked from commit 9b61b194c58c02d4fbbbe439eceeec8fd2a2a54c)

4 weeks ago[9.16] [CVE-2026-5950] sec: usr: Avoid unbounded recursion loop
Colin Vidal [Thu, 30 Apr 2026 15:49:02 +0000 (17:49 +0200)] 
[9.16] [CVE-2026-5950] sec: usr: Avoid unbounded recursion loop

A bug during bad server handling could cause the resolver to enter an infinite loop, continuously sending queries to an upstream server with no exit condition, until the resolver query timeout was hit. This has been fixed.

ISC would like to thank Billy Baraja (BielraX) for bringing this issue to our attention.

Closes isc-projects/bind9#5804

Backport of !985

Merge branch 'backport-5804-resend-loop-9.16' into 'security-bind-9.16'

See merge request isc-private/bind9!993

4 weeks agorctx_resend() increment query counters
Colin Vidal [Tue, 7 Apr 2026 20:18:58 +0000 (22:18 +0200)] 
rctx_resend() increment query counters

Calls to `rctx_resend()` are done internally within the resolver, in
flow which are not supposed to happens more than once. For instance,
if some query fails, and a specific flag "F" wasn't set, then set the
flag and try again. This wouldn't occur more than once because if the
query fails the next attempt, the flag "F" would be set already, so the
resolver would move to the next server (or give up).

However, a subtle bug missing checking a flag, for instance, could lead
to an unbounded loop re-trying to query the same server. This is now
impossible as `rctx_resend()` also increment the query counters (so if
such case occurs, it would stop once the maximum limit is reached).

(cherry picked from commit b863694b32f8f764ae7475939888aebe99425b90)

4 weeks agoRefactor incrementing query counters
Colin Vidal [Tue, 7 Apr 2026 20:18:10 +0000 (22:18 +0200)] 
Refactor incrementing query counters

Move the logic incrementing the query counter and the global query
counter into a dedicated helper function.

(cherry picked from commit 00345dde8feadf6601c864f000d99e42986159d9)

4 weeks ago[9.16] sec: usr: Fix outgoing zone transfers' quota issue
Arаm Sаrgsyаn [Thu, 30 Apr 2026 14:02:25 +0000 (14:02 +0000)] 
[9.16] sec: usr: Fix outgoing zone transfers' quota issue

Unauthorized clients could consume outgoing zone transfers quota
and block authorized zone transfer clients. This has been fixed.

Backport of MR !971

Fixes isc-projects/bind9#3589

Merge branch 'backport-3859-security-xfrout-quota-fix-9.16' into 'security-bind-9.16'

See merge request isc-private/bind9!998

6 weeks agoApply XFR-out quota after ACL is checked
Aram Sargsyan [Thu, 16 Apr 2026 15:17:46 +0000 (15:17 +0000)] 
Apply XFR-out quota after ACL is checked

Unauthorized clients can consume XFR-out quota and block authorized
XFR clients. Apply the quota after ACL is checked.

(cherry picked from commit e8268b76a8a1cde039131234b04b197ee7b46220)

6 weeks agoAdd xfr quota starvation system test
Alessio Podda [Mon, 13 Apr 2026 13:55:38 +0000 (15:55 +0200)] 
Add xfr quota starvation system test

Add a starvation test that tries to starve the XFR quota with
unautorized requests.

(cherry picked from commit 086cf2312c76c7de20856bcc5946135aab426435)

6 weeks ago[9.16] fix: usr: Remove unnecessary dns_name_free call backport-5881-rsa-exponent-keytrap-cpu-amplification-9.16
Mark Andrews [Wed, 15 Apr 2026 22:59:03 +0000 (08:59 +1000)] 
[9.16] fix: usr: Remove unnecessary dns_name_free call

When processing a catalog zone member's primaries definition and
there is a TXT record containing an invalid name TSIG key name,
dns_name_free was incorrectly called triggering an assertion.
This has been fixed.

Closes #5858

Backport of MR !11832

Merge branch 'backport-5858-remove-unnecessary-dns-name-free-call-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!11850

6 weeks agoChecking invalid TSIG key name in a catalog zone
Mark Andrews [Fri, 10 Apr 2026 03:05:31 +0000 (13:05 +1000)] 
Checking invalid TSIG key name in a catalog zone

(cherry picked from commit 213e59ccf56f4d66cf65f363be4563f2e853d12f)

6 weeks agoRemove unnecessary dns_name_free call
Mark Andrews [Fri, 10 Apr 2026 03:07:26 +0000 (13:07 +1000)] 
Remove unnecessary dns_name_free call

When processing a catalog zone member's primaries definition and
there is a TXT record containing an invalid name TSIG key name,
dns_name_free was incorrectly called triggering an assertion.
This has been fixed.

(cherry picked from commit 9f411c93c4d87b8097d39024da5a9da447cddaf7)

2 months agoMerge branch 'bind-9.16-release' into bind-9.16
Michał Kępień [Wed, 25 Mar 2026 14:26:30 +0000 (15:26 +0100)] 
Merge branch 'bind-9.16-release' into bind-9.16

2 months ago[9.16] [CVE-2026-1519] sec: usr: Fix unbounded NSEC3 iterations when validating refer...
Michał Kępień [Wed, 25 Mar 2026 09:15:37 +0000 (10:15 +0100)] 
[9.16] [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 150.
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

Backport of MR !935

Merge branch '5708-confidential-nsec3-delegation-iteration-fix-fallback-to-insecure-9.16' into 'bind-9.16-release'

See merge request isc-private/bind9!955

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.

(cherry picked from commit 6ca67f65cd685cf8699540a852c1e3775bd48d64)

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.

(cherry picked from commit 0ec08c212022d08c9717f2bc6bd3e8ebd6f034ce)

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.

(cherry picked from commit 988040a5e02f86f4a8cdb0704e8d501f9082a89c)

2 months ago[9.16] new: ci: Add LLVM 22
Michal Nowak [Wed, 4 Mar 2026 11:52:44 +0000 (12:52 +0100)] 
[9.16] new: ci: Add LLVM 22

Backport of MR !11627

Merge branch 'backport-mnowak/llvm-22-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!11630

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

(cherry picked from commit ffd7636e79023eadeacf52cf88c471c885f7be88)

3 months agonew: ci: Add clang 21
Michal Nowak [Mon, 2 Mar 2026 14:28:17 +0000 (15:28 +0100)] 
new: ci: Add clang 21

Merge branch 'mnowak/add-clang-21' into 'bind-9.16'

See merge request isc-projects/bind9!11615

3 months agoAdd clang 21
Michal Nowak [Mon, 2 Mar 2026 13:49:50 +0000 (14:49 +0100)] 
Add clang 21

3 months agofix: ci: Disable Python configuration option in pairwise backport-5751-clear-staleflags-in-CNAME-chains-9.16
Michal Nowak [Thu, 5 Feb 2026 17:23:59 +0000 (18:23 +0100)] 
fix: ci: Disable Python configuration option in pairwise

Merge branch 'mnowak/pairwise-disable-python' into 'bind-9.16'

See merge request isc-projects/bind9!11521

3 months agoDisable Python configuration option in pairwise
Michal Nowak [Thu, 5 Feb 2026 16:25:57 +0000 (17:25 +0100)] 
Disable Python configuration option in pairwise

3 months agofix: ci: Configure without Python as ply is gone from CI images
Michal Nowak [Wed, 4 Feb 2026 19:44:40 +0000 (20:44 +0100)] 
fix: ci: Configure without Python as ply is gone from CI images

But enable Python in Alpine Linux where ply is still present (as we
can't rebuild the image).

Merge branch 'mnowak/configure-without-python' into 'bind-9.16'

See merge request isc-projects/bind9!11518

3 months agoAvoid contrib/ in pylint
Michal Nowak [Wed, 4 Feb 2026 18:36:53 +0000 (19:36 +0100)] 
Avoid contrib/ in pylint

3 months agoStick to black==25.12.0
Michal Nowak [Wed, 4 Feb 2026 18:06:45 +0000 (19:06 +0100)] 
Stick to black==25.12.0

3 months agoConfigure without Python as ply is gone from CI images
Michal Nowak [Wed, 4 Feb 2026 17:23:58 +0000 (18:23 +0100)] 
Configure without Python as ply is gone from CI images

But enable Python in Alpine Linux where ply is still present (as we
can't rebuild the image).

4 months ago[9.16] Drop rolling release distros from CI
Nicki Křížek [Wed, 7 Jan 2026 10:03:23 +0000 (11:03 +0100)] 
[9.16] Drop rolling release distros from CI

The 9.16 EoL should no longer attempt to run tests on rolling releases
in CI.

Related #5699

Merge branch '5699-drop-rolling-distros-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!11429

4 months agoDrop rolling release distros from CI
Nicki Křížek [Mon, 5 Jan 2026 14:06:13 +0000 (15:06 +0100)] 
Drop rolling release distros from CI

The 9.16 EoL should no longer attempt to run tests on rolling releases
in CI.

Move sid- and tumbleweed-specific CFLAGS and EXTRA_CONFIGURE options to
Ubuntu "noble" and AlmaLinux 8, respectively.

6 months ago[9.16] chg: ci: Adjust respdiff threshold
Nicki Křížek [Tue, 25 Nov 2025 15:42:54 +0000 (16:42 +0100)] 
[9.16] chg: ci: Adjust respdiff threshold

Closes #5649

Backport of MR !11262

Merge branch 'backport-nicki/respdiff-threshold-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!11279

6 months agoIncrease the threshold for respdiff-third-party
Nicki Křížek [Fri, 21 Nov 2025 14:05:36 +0000 (15:05 +0100)] 
Increase the threshold for respdiff-third-party

There are multiple reasons for the increased amount of differences we've
been seeing lately and for the raise of the threshold:

1. Recent hardening against cache poisoning (CVE-2025-40778) have
   uncovered a few edge cases where the domain can't be properly
   resolved with the new protections in place, but those are issues with
   upstream configuration and DNS setup.
2. The same hardening magnified some behaviour differences between 9.21
   and older versions. Some misconfigured domains, which can be resolved
   with BIND 9.20 and older are no longer resolvable in 9.21+. This can
   be again attributed to upstream DNS misconfiguration. See #5649.
3. A change in the respdiff CI job to include timeouts in the
   comparison, or rather, increasing the timeouts to resolve the
   previously timed out queries, which are typically failures. With the
   previous job configuration, those were omitted from comparison,
   because they were timeouts. Now, there should be no timeouts, but
   there is a slight increase in the amount of differences for the
   threshold evaluation.

(cherry picked from commit bcc4369b0bf243433ca5334cdce3982a15ce4027)

7 months ago[9.16] [CVE-2025-40780] sec: usr: Cache-poisoning due to weak pseudo-random number...
Michał Kępień [Wed, 22 Oct 2025 16:45:05 +0000 (18:45 +0200)] 
[9.16] [CVE-2025-40780] sec: usr: Cache-poisoning due to weak pseudo-random number generator

It was discovered during research for an upcoming academic paper that a
xoshiro128\*\* internal state can be recovered by an external 3rd party,
allowing the prediction of UDP ports and DNS IDs in outgoing queries.
This could lead to an attacker spoofing the DNS answers with great
efficiency and poisoning the DNS cache.

The internal random generator has been changed to a cryptographically
secure pseudo-random generator.

ISC would like to thank Prof. Amit Klein and Omer Ben Simhon from Hebrew
University of Jerusalem for bringing this vulnerability to our
attention.

Backport of !831

Closes isc-projects/bind9#5484

Merge branch '5484-security-make-isc_random-csprng-9.16' into 'bind-9.16-release'

See merge request isc-private/bind9!848

7 months agoUse cryptographically-secure pseudo-random generator everywhere
Ondřej Surý [Tue, 19 Aug 2025 17:22:18 +0000 (19:22 +0200)] 
Use cryptographically-secure pseudo-random generator everywhere

It was discovered in an upcoming academic paper that a xoshiro128**
internal state can be recovered by an external 3rd party allowing to
predict UDP ports and DNS IDs in the outgoing queries.  This could lead
to an attacker spoofing the DNS answers with great efficiency and
poisoning the DNS cache.

Change the internal random generator to system CSPRNG with buffering to
avoid excessive syscalls.

Thanks Omer Ben Simhon and Amit Klein of Hebrew University of Jerusalem
for responsibly reporting this to us.  Very cool research!

(cherry picked from commit cffcab9d5f3e709002f331b72498fcc229786ae2)

7 months ago[9.16] [CVE-2025-40778] sec: usr: Address various spoofing attacks
Michał Kępień [Wed, 22 Oct 2025 16:41:51 +0000 (18:41 +0200)] 
[9.16] [CVE-2025-40778] sec: usr: Address various spoofing attacks

Previously, several issues could be exploited to poison a DNS cache with
spoofed records for zones which were not DNSSEC-signed or if the
resolver was configured to not do DNSSEC validation. These issues were
assigned CVE-2025-40778 and have now been fixed.

As an additional layer of protection, :iscman:`named` no longer accepts
DNAME records or extraneous NS records in the AUTHORITY section unless
these are received via spoofing-resistant transport (TCP, UDP with DNS
cookies, TSIG, or SIG(0)).

ISC would like to thank Yuxiao Wu, Yunyi Zhang, Baojun Liu, and Haixin
Duan from Tsinghua University for bringing this vulnerability to our
attention.

Backport of !838

Closes isc-projects/bind9#5414

Merge branch '5414-security-check-name-vs-qname-again-9.16' into 'bind-9.16-release'

See merge request isc-private/bind9!859

7 months agoRetry lookups with unsigned DNAME over TCP
Evan Hunt [Tue, 30 Sep 2025 04:57:48 +0000 (21:57 -0700)] 
Retry lookups with unsigned DNAME over TCP

To prevent spoofed unsigned DNAME responses being accepted retry
response with unsigned DNAMEs over TCP if the response is not TSIG
signed or there isn't a good DNS CLIENT COOKIE.

To prevent test failures, this required adding TCP support to the
ans3 and ans4 servers in the chain system test.

(cherry picked from commit 2e40705c06831988106335ed77db3cf924d431f6)

7 months agoFurther restrict addresses that are cached when processing referrals
Evan Hunt [Tue, 30 Sep 2025 04:52:43 +0000 (21:52 -0700)] 
Further restrict addresses that are cached when processing referrals

Use the owner name of the NS record as the bailwick apex name
when determining which additional records to cache, rather than
the name of the delegating zone (or a parent thereof).

(cherry picked from commit a41054e9e606a61f1b3c8bc0c54e2f1059347165)

7 months agoTighten restrictions on caching NS RRsets in authority section
Evan Hunt [Tue, 30 Sep 2025 04:46:59 +0000 (21:46 -0700)] 
Tighten restrictions on caching NS RRsets in authority section

To prevent certain spoofing attacks, a new check has been added
to the existing rules for whether NS data can be cached: the owner
name of the NS RRset must be an ancestor of the name being queried.

(cherry picked from commit fa153f791f9324bf84abf8d259e11c0531fe6e25)

7 months agoMake Debian 13 "trixie" the base image
Michal Nowak [Fri, 3 Oct 2025 13:25:56 +0000 (15:25 +0200)] 
Make Debian 13 "trixie" the base image

Merge branch 'mnowak/make-trixie-the-base-image-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!11033

7 months agoSet more lenient respdiff limits
Michal Nowak [Wed, 19 Mar 2025 13:02:32 +0000 (14:02 +0100)] 
Set more lenient respdiff limits

After !9950, respdiff's maximal disagreement percentage needs to be
adjusted as target disagreements between the tested version of the
"main" branch and the reference one jumped for the respdiff,
respdiff:asan, and respdiff:tsan jobs from on average 0.07% to 0.16% and
from 0.12% to 0.17% for the respdiff-third-party job.

In !9950, we concluded setting MAX_DISAGREEMENTS_PERCENTAGE to double
the average disagreement percentage works fine in the CI.

(cherry picked from commit 9acc0c8543b6173c35019982bd6677a421204bff)

7 months agoDrop docs:pdf
Michal Nowak [Wed, 1 Oct 2025 09:07:02 +0000 (11:07 +0200)] 
Drop docs:pdf

It takes 15 minutes to install LaTeX, while we don't care anymore if ARM
PDF builds or not.

7 months agoDrop gcc:sid:amd64 jobs
Michal Nowak [Wed, 1 Oct 2025 08:36:49 +0000 (10:36 +0200)] 
Drop gcc:sid:amd64 jobs

They fail to build with GCC 15.2.0:

    rdata/in_1/wks_11.c: In function 'totext_in_wks':
    rdata/in_1/wks_11.c:238:77: error: '%u' directive output may be truncated writing between 1 and 10 bytes into a region of size 6 [-Werror=format-truncation=]
      238 |                                                 snprintf(buf, sizeof(buf), "%u",
          |                                                                             ^~
    rdata/in_1/wks_11.c:238:76: note: directive argument in the range [1, 4294967295]
      238 |                                                 snprintf(buf, sizeof(buf), "%u",
          |                                                                            ^~~~
    rdata/in_1/wks_11.c:238:49: note: 'snprintf' output between 2 and 11 bytes into a destination of size 6
      238 |                                                 snprintf(buf, sizeof(buf), "%u",
          |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      239 |                                                          i * 8 + j);
          |                                                          ~~~~~~~~~~

nolibtool:sid:amd64 keeps building, so keep it.

Move -O3 and --without-lmdb to gcc:noble:amd64.

Move RUN_MAKE_INSTALL=1 to gcc:trixie:amd64 as Sphinx is needed to build
man pages that are checked for in util/check-make-install.

7 months agoStick "reuse" to the 5.0 image
Michal Nowak [Wed, 1 Oct 2025 08:30:35 +0000 (10:30 +0200)] 
Stick "reuse" to the 5.0 image

Otherwise, we'd had to convert the dep5 list to toml.

7 months agoMake Debian 13 "trixie" the base image
Michal Nowak [Wed, 1 Oct 2025 08:09:51 +0000 (10:09 +0200)] 
Make Debian 13 "trixie" the base image

12 months ago[9.16] chg: ci: Revert Run CI danger job even if user canceled it while it was running
Petr Špaček [Mon, 2 Jun 2025 16:19:22 +0000 (16:19 +0000)] 
[9.16] chg: ci: Revert Run CI danger job even if user canceled it while it was running

Backport of !10540

Merge branch 'revert-c87bb9fe' into 'bind-9.16'

See merge request isc-projects/bind9!10544

12 months agoRevert "[9.16] chg: ci: Run CI danger job even if user canceled it while it was running"
Petr Špaček [Mon, 2 Jun 2025 16:18:19 +0000 (16:18 +0000)] 
Revert "[9.16] chg: ci: Run CI danger job even if user canceled it while it was running"

This reverts merge request !10536

12 months ago[9.16] chg: ci: Run CI danger job even if user canceled it while it was running
Petr Špaček [Mon, 2 Jun 2025 12:09:46 +0000 (12:09 +0000)] 
[9.16] chg: ci: Run CI danger job even if user canceled it while it was running

Backport of MR !10490

Merge branch 'backport-pspacek/always-hazard-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10536

12 months agoRun CI danger job even if user canceled it while it was running
Petr Špaček [Wed, 28 May 2025 13:46:14 +0000 (15:46 +0200)] 
Run CI danger job even if user canceled it while it was running

Limitation: The after_script is not executed if the job did not start at
all, i.e. if the user canceled the job before it got onto a runner.
See https://gitlab.com/groups/gitlab-org/-/epics/10158

(cherry picked from commit 33bc2628b78dd0a91c1ff644184628b184118588)

12 months ago[9.16] chg: ci: Replace Oracle Linux Docker images with AlmaLinux ones
Michal Nowak [Thu, 29 May 2025 15:55:24 +0000 (15:55 +0000)] 
[9.16] chg: ci: Replace Oracle Linux Docker images with AlmaLinux ones

To be consistent with the replacing of Oracle Linux QCOW2 images with
AlmaLinux AWS AMIs, also replace Docker images.

Backport of MR !10434

Merge branch 'backport-mnowak/replace-oracle-linux-with-almalinux-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10514

12 months agoReplace Oracle Linux Docker images with AlmaLinux ones
Michal Nowak [Wed, 30 Apr 2025 15:34:13 +0000 (17:34 +0200)] 
Replace Oracle Linux Docker images with AlmaLinux ones

To be consistent with the replacing of Oracle Linux QCOW2 images with
AlmaLinux AWS AMIs, also replace Docker images.

(cherry picked from commit 63947a20622946af134a1738a10170e1d3770f27)

12 months ago[9.16] rem: ci: Drop Ubuntu 20.04 Focal Fossa
Michal Nowak [Tue, 13 May 2025 17:29:52 +0000 (17:29 +0000)] 
[9.16] rem: ci: Drop Ubuntu 20.04 Focal Fossa

Focal-specific ./configure options were moved to Jammy.

Backport of MR !9899

Merge branch 'backport-mnowak/drop-ubuntu-focal-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10457

12 months agoMake FreeBSD 12.x part of Community-Maintained platforms
Michal Nowak [Thu, 12 Dec 2024 11:27:09 +0000 (12:27 +0100)] 
Make FreeBSD 12.x part of Community-Maintained platforms

(cherry picked from commit ff39441874fd234ac03567d04d8f3dad0f777b1d)

12 months agoDrop Ubuntu 20.04 Focal Fossa
Michal Nowak [Thu, 12 Dec 2024 11:25:09 +0000 (12:25 +0100)] 
Drop Ubuntu 20.04 Focal Fossa

Focal-specific ./configure options were moved to Jammy.

(cherry picked from commit 326e19a65ae511df56c8a32c49d011052186774f)

13 months ago[9.16] [9.18] fix: dev: Unify the int32_t vs int_fast32_t when working with atomic...
Ondřej Surý [Mon, 14 Apr 2025 19:19:32 +0000 (19:19 +0000)] 
[9.16] [9.18] fix: dev: Unify the int32_t vs int_fast32_t when working with atomic types

There's a mismatch between the atomic and non-atomic types that could
potentialy lead to a rwlock deadlock (after two billion 2^32) writes.
Use int_fast32_t when loading the atomic_int_fast32_t types in the
isc_rwlock unit.

Closes #5280

Backport of MR !10390

Merge branch 'backport-5280-match-the-types-in-isc_rwlock-9.18-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10391

13 months agoUnify the int32_t vs int_fast32_t when working with atomic types
Ondřej Surý [Mon, 14 Apr 2025 16:56:54 +0000 (18:56 +0200)] 
Unify the int32_t vs int_fast32_t when working with atomic types

There's a mismatch between the atomic and non-atomic types that could
potentialy lead to a rwlock deadlock (after two billion 2^32) writes.
Use int_fast32_t when loading the atomic_int_fast32_t types in the
isc_rwlock unit.

(cherry picked from commit 86673ee67aacf677c96f8272e4a0b9fa65e06310)

14 months ago[9.16] new: ci: Allow pushing branches and tags to customer git repos
Nicki Křížek [Wed, 2 Apr 2025 11:13:28 +0000 (11:13 +0000)] 
[9.16] new: ci: Allow pushing branches and tags to customer git repos

For pipelines in the private repository, add an optional manual job,
which allows the current branch to be pushed into the specified
customer's git repository. This can be useful to provide patch previews
for early testing.

For tags created in a private repository, add a manual job which pushes
the created tag to all entitled customers.

Backport of MR !10323

Merge branch 'backport-nicki/ci-customer-git-automation-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10358

14 months agoAllow pushing branches and tags to customer git repos
Nicki Křížek [Tue, 25 Mar 2025 15:51:24 +0000 (16:51 +0100)] 
Allow pushing branches and tags to customer git repos

For pipelines in the private repository, add an optional manual job,
which allows the current branch to be pushed into the specified
customer's git repository. This can be useful to provide patch previews
for early testing.

For tags created in a private repository, add a manual job which pushes
the created tag to all entitled customers.

(cherry picked from commit 378b412e94a40ee74ab5c9edfb3a2059612a59ff)

14 months agoAdd Clang 20
Michal Nowak [Wed, 19 Mar 2025 08:09:38 +0000 (08:09 +0000)] 
Add Clang 20

Clang 18 is no longer in the base image with a recent image update and clang-format and scan-build fail.

Merge branch 'mnowak/missing-clang-18' into 'bind-9.16'

See merge request isc-projects/bind9!10269

14 months agoDrop scan-build job
Michal Nowak [Mon, 17 Mar 2025 14:51:18 +0000 (15:51 +0100)] 
Drop scan-build job

With the updated Clang 20, the scan-build job fails identifying 10 bugs,
but they are unlikely to be addressed in this EoL branch.

14 months agoDrop clang-format job
Michal Nowak [Mon, 17 Mar 2025 14:50:26 +0000 (15:50 +0100)] 
Drop clang-format job

With updated Clang, the job won't pass. Reformating the code just for
the sake of the job seems futile.

14 months agoUpdate CLANG_VERSION to 20
Michal Nowak [Mon, 17 Mar 2025 14:13:45 +0000 (15:13 +0100)] 
Update CLANG_VERSION to 20

With a recent image update Clang 18 is no longer in the base image.
Update the Clang version used to 20.

14 months ago[9.16] new: dev: Implement -T cookiealwaysvalid
Arаm Sаrgsyаn [Tue, 18 Mar 2025 16:20:10 +0000 (16:20 +0000)] 
[9.16] new: dev: Implement -T cookiealwaysvalid

When `-T cookiealwaysvalid` is passed to `named`, DNS cookie checks for
the incoming queries always pass, given they are structurally correct.

Backport of MR !10232

Merge branch 'backport-aram/new-named-minus-T-option-of-cookiealwaysvalid-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10266

14 months agoTest -T cookiealwaysvalid
Aram Sargsyan [Tue, 11 Mar 2025 14:29:22 +0000 (14:29 +0000)] 
Test -T cookiealwaysvalid

Add a check in the "cookie" system test to make sure that the new
'-T cookiealwaysvalid' option works.

(cherry picked from commit 4e75a20b6a63c3840559accc9df2af2d50a747f6)

14 months agoImplement -T cookiealwaysvalid
Aram Sargsyan [Tue, 11 Mar 2025 14:03:56 +0000 (14:03 +0000)] 
Implement -T cookiealwaysvalid

When -T cookiealwaysvalid is passed to named, DNS cookie checks for
the incoming queries always pass, given they are structurally correct.

(cherry picked from commit 807ef8545d2e06c77826f3b2ac3f1cb7a7413dad)

14 months agoDrop unused libvirt anchor
Michal Nowak [Tue, 11 Mar 2025 13:12:18 +0000 (13:12 +0000)] 
Drop unused libvirt anchor

This is a leftover from f08f69c54d594c36e36a07ccbd04a4a2276e2da0.

Merge branch 'mnowak/drop-libvirt-anchor' into 'bind-9.16'

See merge request isc-projects/bind9!10231

14 months agoDrop unused libvirt anchor
Michal Nowak [Tue, 11 Mar 2025 13:09:58 +0000 (14:09 +0100)] 
Drop unused libvirt anchor

This is a leftover from f08f69c54d594c36e36a07ccbd04a4a2276e2da0.

14 months agoDrop FreeBSD and OpenBSD from CI
Michal Nowak [Tue, 11 Mar 2025 12:42:59 +0000 (12:42 +0000)] 
Drop FreeBSD and OpenBSD from CI

Both FreeBSD and OpenBSD in the CI are tested on outdated images.
Current FreeBSD images can't even be rebuild because in the maintained
branches they were ported from QCOW2 to the AWS autoscaler (also a
future of the OpenBSD image). This is something we don't want to
backport to EoL branches.

Merge branch 'mnowak/drop-bsd-images-from-ci' into 'bind-9.16'

See merge request isc-projects/bind9!10229

14 months agoDrop FreeBSD and OpenBSD from CI
Michal Nowak [Tue, 11 Mar 2025 09:56:18 +0000 (10:56 +0100)] 
Drop FreeBSD and OpenBSD from CI

Both FreeBSD and OpenBSD in the CI are tested on outdated images.
Current FreeBSD images can't even be rebuild because in the maintained
branches they were ported from QCOW2 to the AWS autoscaler (also a
future of the OpenBSD image). This is something we don't want to
backport to EoL branches.

15 months agoDrop some unit tests
Michal Nowak [Mon, 3 Feb 2025 19:02:54 +0000 (19:02 +0000)] 
Drop some unit tests

After isc-projects/images!330, kyua is present in fewer images.

Merge branch 'mnowak/drop-some-unit-tests' into 'bind-9.16'

See merge request isc-projects/bind9!10041

15 months agoRevert "Build contrib dlz modules in the CI"
Michal Nowak [Mon, 30 May 2022 14:20:53 +0000 (16:20 +0200)] 
Revert "Build contrib dlz modules in the CI"

The libsqlite3-dev package is not present in "bookworm" images and some
unsupported contrib modules won't build.

This reverts commit 8f2f5c426ee9db9340205c1a8ac31f5bb50b2fd0.

15 months agoDrop Tumbleweed unit test
Michal Nowak [Fri, 31 Jan 2025 12:14:59 +0000 (13:14 +0100)] 
Drop Tumbleweed unit test

openSUSE Tumbleweed image does not have kyua anymore.

15 months agoDrop unit:gcc:focal:amd64
Michal Nowak [Mon, 3 Feb 2025 10:57:36 +0000 (11:57 +0100)] 
Drop unit:gcc:focal:amd64

The "focal" image does not have kyua.

15 months agoMove --without-cmocka to Ubuntu 20.04 (Focal Fossa)
Michal Nowak [Fri, 31 Jan 2025 12:00:36 +0000 (13:00 +0100)] 
Move --without-cmocka to Ubuntu 20.04 (Focal Fossa)

"focal" does not have kyua in its stock repositories and is a good
candidate to build BIND 9 with this ./configure option.

16 months ago[9.16] fix: ci: Do not trigger post-merge jobs for cross-project pushes
Petr Špaček [Fri, 31 Jan 2025 14:16:39 +0000 (14:16 +0000)] 
[9.16] fix: ci: Do not trigger post-merge jobs for cross-project pushes

Backport of MR !10029
Backport of MR !10042

Merge branch 'backport-pspacek/no-cross-project-after-merge-jobs-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10045

16 months agoFix shell escaping in post-merge before_script
Petr Špaček [Fri, 31 Jan 2025 13:20:04 +0000 (14:20 +0100)] 
Fix shell escaping in post-merge before_script

Fixup for commit 60140607740bf8e07c0f223c18798bef36ef439c
"Do not trigger post-merge jobs for cross-project pushes".

Related: isc-projects/bind9!10029
(cherry picked from commit 6276e0b23b678c271de38e92b460b5eba9da0d04)

16 months agoDo not trigger post-merge jobs for cross-project pushes
Petr Špaček [Thu, 30 Jan 2025 10:24:59 +0000 (11:24 +0100)] 
Do not trigger post-merge jobs for cross-project pushes

We need to avoid double-triggering of post-merge jobs in the following
scenario:

 1. A private MR gets merged into the private BIND 9 repository.

 2. This merge operation triggers a "push" pipeline in the private
    repository, which correctly runs post-merge jobs, e.g. to set MR
    metadata in the private project.

 3. When a release is published, a script is run to change the
    automatically assigned milestone value ("Not released yet") to
    something else.

 4. Shortly afterwards, the result of the merge from step 1 is merged
    back into a maintenance branch in the public repository.

 5. The push operation triggers another "push" pipeline, this time in
    the public project.

At this point there are two problems:

  - If the script is dumb (like it currently is), it will extract the
    merge request ID from the merge commit description and change the
    milestone for a merge request in the wrong project namespace.

  - Even if the script was fixed to extract and use the correct GitLab
    project reference, it would reset the milestone for the merge
    request in the private repository back to "Not released yet" - while
    the milestone set in step 3 should be retained.

An alternative would be to change the order of operations so that
post-release milestoning happens at a later stage, while also fixing the
script to correctly follow cross-project references, but that approach
seems more fragile than simply failing on all cross-project pushes.  The
rule to enforce is: each project should only take care of its own
post-merge tasks.

(cherry picked from commit 60140607740bf8e07c0f223c18798bef36ef439c)

16 months ago[9.16] chg: ci: Use default cloning depth for the Danger CI job
Michał Kępień [Fri, 31 Jan 2025 09:37:54 +0000 (09:37 +0000)] 
[9.16] chg: ci: Use default cloning depth for the Danger CI job

With shallow fetching working reliably in pygit2 1.17.0+, there is no
longer any need for GitLab CI runners to clone the BIND 9 repository
with a fixed depth of 1000 during every "danger" CI job as Hazard is now
able to fetch remote refs with an arbitrary depth, controlled by the
HAZARD_FETCH_DEPTH environment variable.  The latter can be defined via
GitLab project's CI settings and adjusted as needed over time, without
the need to update .gitlab-ci.yml every time its value needs to be
changed.

Backport of MR !9946

Merge branch 'backport-michal/use-default-cloning-depth-for-the-danger-ci-job-9.16' into 'bind-9.16'

See merge request isc-projects/bind9!10039

16 months agoUse default cloning depth for the Danger CI job
Michał Kępień [Fri, 31 Jan 2025 09:25:56 +0000 (10:25 +0100)] 
Use default cloning depth for the Danger CI job

With shallow fetching working reliably in pygit2 1.17.0+, there is no
longer any need for GitLab CI runners to clone the BIND 9 repository
with a fixed depth of 1000 during every "danger" CI job as Hazard is now
able to fetch remote refs with an arbitrary depth, controlled by the
HAZARD_FETCH_DEPTH environment variable.  The latter can be defined via
GitLab project's CI settings and adjusted as needed over time, without
the need to update .gitlab-ci.yml every time its value needs to be
changed.

(cherry picked from commit e39e7afc16fe1575afb907be76e55942925e1a3d)

16 months agoMerge branch 'bind-9.16-release' into bind-9.16
Nicki Křížek [Wed, 29 Jan 2025 18:40:05 +0000 (19:40 +0100)] 
Merge branch 'bind-9.16-release' into bind-9.16

16 months agoDrop stress tests
Michal Nowak [Mon, 27 Jan 2025 16:10:36 +0000 (16:10 +0000)] 
Drop stress tests

After isc-projects/bind9-qa!9 merged BIND 9 releases without DoH/DoT
support are not supported.

Merge branch 'mnowak/drop-stress-tests' into 'bind-9.16'

See merge request isc-projects/bind9!10005

16 months agoDrop stress tests
Michal Nowak [Mon, 27 Jan 2025 15:26:54 +0000 (16:26 +0100)] 
Drop stress tests

After isc-projects/bind9-qa!9 merged BIND 9 releases without DoH/DoT
support are not supported.