2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 14:07:59 +00:00
Commit Graph

42685 Commits

Author SHA1 Message Date
Michal Nowak
37cd7daf13 Make FreeBSD 12.x part of Community-Maintained platforms
(cherry picked from commit ff39441874)
2025-05-13 16:26:24 +00:00
Michal Nowak
c9b79d0a77 Drop Ubuntu 20.04 Focal Fossa
Focal-specific ./configure options were moved to Jammy.

(cherry picked from commit 326e19a65a)
2025-05-13 16:26:24 +00:00
Michał Kępień
24870ca4ea chg: doc: Set up version for BIND 9.20.10
Merge branch 'michal/set-up-version-for-bind-9.20.10' into 'bind-9.20'

See merge request isc-projects/bind9!10452
2025-05-12 18:38:56 +00:00
Michał Kępień
07297e0e60 Update BIND version to 9.20.10-dev 2025-05-12 20:24:39 +02:00
Michał Kępień
98f2a5b7f4 Update BIND version for release v9.20.9 2025-05-08 23:10:54 +02:00
Michał Kępień
c70bb7aa06 new: doc: Prepare documentation for BIND 9.20.9
Merge branch 'michal/prepare-documentation-for-bind-9.20.9' into 'v9.20.9-release'

See merge request isc-private/bind9!797
2025-05-08 21:08:05 +00:00
Michał Kępień
a2fdb1a5d6 Reorder release notes 2025-05-08 22:53:43 +02:00
Michał Kępień
51dee8510c Tweak and reword release notes 2025-05-08 22:53:43 +02:00
Michał Kępień
58f6b1aac5 Prepare release notes for BIND 9.20.9 2025-05-08 22:53:43 +02:00
Michał Kępień
4d92246e63 Generate changelog for BIND 9.20.9 2025-05-08 22:53:43 +02:00
Michał Kępień
b8c198ac5c [9.20] [CVE-2025-40775] sec: usr: Prevent assertion when processing TSIG algorithm
DNS messages that included a Transaction Signature (TSIG) containing an
invalid value in the algorithm field caused :iscman:`named` to crash
with an assertion failure. This has been fixed.  :cve:`2025-40775`

Backport of !793

See isc-projects/bind9#5300

Merge branch '5300-confidential-tsig-unknown-alg-bind-9.20' into 'v9.20.9-release'

See merge request isc-private/bind9!795
2025-05-07 11:46:13 +00:00
Evan Hunt
12d13ff071 Prevent assertion when processing TSIG algorithm
In a previous change, the "algorithm" value passed to
dns_tsigkey_create() was changed from a DNS name to an integer;
the name was then chosen from a table of known algorithms. A
side effect of this change was that a query using an unknown TSIG
algorithm was no longer handled correctly, and could trigger an
assertion failure.  This has been corrected.

The dns_tsigkey struct now stores the signing algorithm
as dst_algorithm_t value 'alg' instead of as a dns_name,
but retains an 'algname' field, which is used only when the
algorithm is DST_ALG_UNKNOWN.  This allows the name of the
unrecognized algorithm name to be returned in a BADKEY
response.

(cherry picked from commit decf461d68846d6754c1f64790c3f9006d158a1d)
2025-05-07 13:45:48 +02:00
Michał Kępień
8c3b226d89 [9.20] fix: usr: Fix EDNS yaml output
`dig` was producing invalid YAML when displaying some EDNS options. This has been corrected.

Several other improvements have been made to the display of EDNS option data:
- We now use the correct name for the UPDATE-LEASE option, which was previously displayed as "UL", and split it into separate LEASE and LEASE-KEY components in YAML mode.
- Human-readable durations are now displayed as comments in YAML mode so as not to interfere with machine parsing.
- KEY-TAG options are now displayed as an array of integers in YAML mode.
- EDNS COOKIE options are displayed as separate CLIENT and SERVER components, and cookie STATUS is a retrievable variable in YAML mode.

Closes #5014

Backport of MR !9695

Merge branch 'backport-5014-improve-edns-yaml-processing-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10414
2025-05-07 07:40:45 +00:00
Mark Andrews
ca125dca24 Fix the error handling of put_yamlstr calls
The return value was sometimes being ignored when it shouldn't
have been.

(cherry picked from commit c0fcb9fd0e)
2025-05-07 00:00:10 -07:00
Mark Andrews
c3ec565f74 Fix a typo in a test description
The test description "checking delv -c CH is ignored, and
treated like IN" in digdelv was garbled.

(cherry picked from commit 5424b30d7a)
2025-05-07 00:00:10 -07:00
Mark Andrews
75ef402296 Check EDNS CLIENT-TAG and SERVER-TAG are emitted using valid YAML
Check that when an EDNS CLIENT-TAG or EDNS SERVER-TAG option is
present in the message, the emitted YAML is valid.

(cherry picked from commit 2efb15b54a)
2025-05-07 00:00:10 -07:00
Mark Andrews
082f22b2ff Check EDNS EXPIRE option is emitted using valid YAML
Check that when an EDNS EXPIRE option is present in the message,
the emitted YAML is valid.

(cherry picked from commit e611e2044a)
2025-05-07 00:00:10 -07:00
Mark Andrews
c0748d071f Check EDNS CLIENT-SUBNET option is emitted using valid YAML
Check that when there is an EDNS CLIENT-SUBNET option in the
message, the emitted YAML is valid.

(cherry picked from commit 641ca9044f)
2025-05-07 00:00:10 -07:00
Mark Andrews
93be5d085a Split EDNS COOKIE YAML into separate parts
Split the YAML display of the EDNS COOKIE option into CLIENT and SERVER
parts.  The STATUS of the EDNS COOKIE in the reply is now a YAML element
rather than a comment.

(cherry picked from commit 5eeb31f0b9)
2025-05-07 00:00:10 -07:00
Mark Andrews
d5b9e6790f Fix EDNS TCP-KEEPALIVE option YAML output
There was missing white space between the option name and its value.

(cherry picked from commit 07c28652a3)
2025-05-07 00:00:10 -07:00
Mark Andrews
246fadfef2 Fix EDNS LLQ option YAML output
The EDNS LLQ option was not being emitted as valid YAML. Correct
the output to be valid YAML with each field of the LLQ being
individually selectable.

(cherry picked from commit 81334113c3)
2025-05-07 00:00:10 -07:00
Mark Andrews
758f5e6892 Change the EDNS KEY-TAG YAML output format
When using YAML, print the EDNS KEY-TAG as an array of integers
for easier machine parsing. Check the validity of the YAML output.

(cherry picked from commit 27e8732c17)
2025-05-07 00:00:10 -07:00
Mark Andrews
b02ff4c501 Use YAML comments for durations rather than parentheses
This will allow the values to be parsed using standard yaml processing
tools, and still provide the value in a human friendly form.

(cherry picked from commit 378bc7cfa6)
2025-05-07 00:00:10 -07:00
Mark Andrews
09893287c2 Change the name and YAML format of EDNS UL
The offical EDNS option name for "UL" is "UPDATE-LEASE".  We now
emit "UPDATE-LEASE" instead of "UL", when printing messages, but
"UL" has been retained as an alias on the command line.

Update leases consist of 1 or 2 values, LEASE and KEY-LEASE.  These
components are now emitted separately so they can be easily extracted
from YAML output.  Tests have been added to check YAML correctness.

(cherry picked from commit 68cdc4774c)
2025-05-07 00:00:10 -07:00
Mark Andrews
44fc37033e Add YAML escaping where needed
When rendering text, such as domain names or the EXTRA-TEXT
field of the EDE option, backslashes and quotation marks must
be escaped to ensure that the emitted message is valid YAML.

(cherry picked from commit 280e9b7cf4)
2025-05-07 00:00:10 -07:00
Mark Andrews
145029782d Collapse common switch cases when emitting EDNS options
The CHAIN and REPORT-CHANNEL EDNS options are both domain names, so they
can be combined.  THE CLIENT-TAG and SERVER-TAG EDNS options are both 16
bit integers, so they can be combined.

(cherry picked from commit e7ef4e41eb)
2025-05-07 00:00:10 -07:00
Evan Hunt
858b3f763b refactor, add missing EDNS options, and fix option names
some EDNS option names, including DAU, DHU, N3U, and CHAIN,
were not printed in dns_message_pseudosectiontotext() or
_psuedosectiontoyaml(); they were displayed as unknown options.
this has been corrected.

that code was also refactored to use switch instead of if/else,
and to look up the option code names in a table to prevent
inconsistencies between the two formats. one such inconsistency
was corrected: the "TCP-KEEPALIVE" option is now always printed
with a hyphen, instead of being "TCP KEEPALIVE" when not using
YAML. the keepalive system test has been updated to expect this.

EDNS options that print DNS names (i.e., CHAIN and Report-Channel)
now enclose them in quotation marks to ensure YAML correctness.
the auth system test has been updated to expect this when grepping
for Report-Channel options.

(cherry picked from commit e2393ba27b)
2025-05-07 00:00:10 -07:00
Evan Hunt
b202ecc7ca add missing EDNS option mnemonics to dig
Report-Channel and ZONEVERSION EDNS options can now be sent
using `dig +ednsopt=report-channel` (or `dig +ednsopt=rc` for
short), and `dig +ednsopt=zoneversion`.

(cherry picked from commit c30754f28b)
2025-05-07 00:00:10 -07:00
Michał Kępień
ac41f158fa fix: usr: Revert NSEC3 closest encloser lookup improvements
The performance improvements for NSEC3 closest encloser lookups that
were restored in BIND 9.20.8 turned out to cause incorrect NSEC3 records
to be returned in nonexistence proofs and were therefore reverted again.

Closes #5292

Merge branch '5292-revert-nsec3-closest-encloser-lookup-improvements' into 'bind-9.20'

See merge request isc-projects/bind9!10443
2025-05-07 06:33:04 +00:00
Michał Kępień
5df876e968 Revert "Use a binary search to find the NSEC3 closest encloser"
This reverts commit ae718fab53.
2025-05-06 09:14:18 +02:00
Michał Kępień
d0e0706797 Revert "qpzone find() function could set foundname incorrectly"
This reverts commit dd1050e938.
2025-05-06 09:14:18 +02:00
Michał Kępień
e6a9a68f42 Revert "rbtdb zone find() function could set foundname incorrectly"
This reverts commit 2025ba8f7a.
2025-05-06 09:14:18 +02:00
Michał Kępień
8ea0c1d92b Revert "detect when closest-encloser name is too long"
This reverts commit 1f4ba71f56.
2025-05-06 09:14:18 +02:00
Michal Nowak
b53ae56106 [9.20] chg: ci: Run linkchecker only on Wednesdays
Some domains tested by linkchecker may think that we connect to them too
often and will refuse connection or reply with an error code, which makes
this job fail. Let's check links only on Wednesdays.

Backport of MR !10439

Merge branch 'backport-mnowak/run-linkchecker-only-sometimes-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10440
2025-05-05 15:05:46 +00:00
Michal Nowak
a1a7398e6c Run linkchecker only on Wednesdays
Some domains tested by linkchecker may think that we connect to them too
often and will refuse connection or reply with and error code, which
makes this job fail. Let's check links only on Wednesdays.

(cherry picked from commit f745a9212a)
2025-05-05 14:53:49 +00:00
Michal Nowak
80a50dea46 [9.20] chg: ci: Disable linkcheck on www.gnu.org
The check fails with the following error for some time:

    broken    https://www.gnu.org/software/libidn/#libidn2 - HTTPSConnectionPool(host='www.gnu.org', port=443): Max retries exceeded with url: /software/libidn/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f5bd4c14590>: Failed to establish a new connection: [Errno 111] Connection refused'))

Backport of MR !10436

Merge branch 'backport-mnowak/linkcheck-disable-www-gnu-org-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10437
2025-05-05 10:13:38 +00:00
Michal Nowak
3c8ad05de6 Disable linkcheck on www.gnu.org
The check fails with the following error for some time:

    broken    https://www.gnu.org/software/libidn/#libidn2 - HTTPSConnectionPool(host='www.gnu.org', port=443): Max retries exceeded with url: /software/libidn/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f5bd4c14590>: Failed to establish a new connection: [Errno 111] Connection refused'))

(cherry picked from commit 0ea4ebf7d1)
2025-05-05 10:00:24 +00:00
Mark Andrews
3e2b255b5b [9.20] fix: dev: fix the ksr two-tone test
The two-tone ksr subtest (test_ksr_twotone) depended on the dnssec-policy keys algorithm values in named.conf being entered in numerical order.  As the algorithms used in the test can be selected randomly this does not always happen. Sort the dnssec-policy keys by algorithm when adding them to the key list from named.conf.

Closes #5286

Backport of MR !10395

Merge branch 'backport-5286-ksr-two-tone-test-only-work-by-luck-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10435
2025-05-04 05:09:26 +00:00
Mark Andrews
5a7274cbd6 Don't depend on keys being sorted
Extract each section of the bundle and check that the expected
records are there.  The old code was assuming that the records in
each section where in a particular order which didn't happen in
practice.

(cherry picked from commit 92a50dab28)
2025-05-02 07:13:33 +00:00
Matthijs Mekking
95a970bb89 [9.20] chg: test: Rewrite kasp system test to pytest (4)
These tests do not easily fit in the standard test case framework, so they go into their own suite.
- zsk retired case
- checkds cases
- reload/restart
- inheritance tests

Backport of MR !10278

Merge branch 'backport-matthijs-pytest-rewrite-kasp-system-test-4-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10424
2025-04-30 08:29:03 +00:00
Matthijs Mekking
ca0ae03488 Convert kasp inheritance tests
These tests ensure that if dnssec-policy is set on a higher level, the
zone is still signed (or unsigned) as expected. Or if a higher level
has an override, the new policy is honored as expected.

(cherry picked from commit 2e4cc70626)
2025-04-30 07:56:31 +00:00
Matthijs Mekking
dc74bc8051 Convert reload/restart kasp test case
This test checks that the SOA SERIAL and TTL are adjusted correctly
after a reload/restart.

(cherry picked from commit bff7453e50)
2025-04-30 07:56:31 +00:00
Matthijs Mekking
2c10acafa4 Convert kasp checkds test cases to pytest
This converts the checkds test cases that deal with the 'rndc checkds'
command and setting the 'DSPublish' and 'DSRemoved' metadata.

(cherry picked from commit 44b4d5ebd6)
2025-04-30 07:56:31 +00:00
Matthijs Mekking
9272219a53 Convert kasp zsk retired test case
This test case does not easily fit in the standard test case framework,
so it goes into its own suite.

(cherry picked from commit 1940aa1d0b)
2025-04-30 07:56:31 +00:00
Michał Kępień
da37da6615 [9.20] chg: ci: Revise merge request pipeline job triggering rules
Over the past few years, some of the initial decisions made about which
GitLab CI jobs to run for all merge requests and which of them to run
just for scheduled/web-triggered pipelines turned out to be less than
ideal in practice: test coverage was found to be too lax in some areas
and on the other hand unnecessarily repetitive in others.  For example,
compilation failures for certain build types that are not exercised for
every merge request (e.g. FIPS-enabled builds) turned out to be much
more common in practice than e.g. test failures happening only on a
subset of releases of a given Linux distribution.

To limit excessive resource use while retaining broad test coverage,
adjust GitLab CI job triggering rules for merge request pipelines as
follows:

- run all possible build jobs for every merge request; compilation
failures triggered for build flavors that were only tested in
scheduled pipelines turned out to be surprisingly commonplace and
became a nuisance over time, particularly given that the run times
of build jobs are much lower than those of test jobs,

- for every merge request, run at least one system & unit test job for
each build flavor (e.g. sanitizer-enabled, FIPS-enabled,
out-of-tree, tarball-based, etc.),

- limit the amount of test jobs run for each distinct operating
system; for example, only run system & unit test jobs for Ubuntu
24.04 Noble Numbat in merge request pipelines, skipping those for
Ubuntu 22.04 Jammy Jellyfish and Ubuntu 20.04 Focal Fossa (while
still running them in other pipeline types, e.g. in scheduled
pipelines),

- ensure every merge request is tested on Oracle Linux 8, which is the
operating system with the oldest package versions out of the systems
that are still supported by this BIND 9 branch,

- decrease the number of test jobs run with sanitizers enabled while
still testing with both ASAN and TSAN and both GCC and Clang for
every merge request.

These changes do not affect the set of jobs created for any other
pipeline type (triggered by a schedule, by a GitLab API call, by the web
interface, etc.); only merge request pipelines are affected.

Backport of MR !10349

Merge branch 'backport-michal/revise-ci-job-triggering-rules-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10430
2025-04-29 16:57:03 +00:00
Michał Kępień
6960aa7712 Revise merge request pipeline job triggering rules
Over the past few years, some of the initial decisions made about which
GitLab CI jobs to run for all merge requests and which of them to run
just for scheduled/web-triggered pipelines turned out to be less than
ideal in practice: test coverage was found to be too lax in some areas
and on the other hand unnecessarily repetitive in others.  For example,
compilation failures for certain build types that are not exercised for
every merge request (e.g. FIPS-enabled builds) turned out to be much
more common in practice than e.g. test failures happening only on a
subset of releases of a given Linux distribution.

To limit excessive resource use while retaining broad test coverage,
adjust GitLab CI job triggering rules for merge request pipelines as
follows:

  - run all possible build jobs for every merge request; compilation
    failures triggered for build flavors that were only tested in
    scheduled pipelines turned out to be surprisingly commonplace and
    became a nuisance over time, particularly given that the run times
    of build jobs are much lower than those of test jobs,

  - for every merge request, run at least one system & unit test job for
    each build flavor (e.g. sanitizer-enabled, FIPS-enabled,
    out-of-tree, tarball-based, etc.),

  - limit the amount of test jobs run for each distinct operating
    system; for example, only run system & unit test jobs for Ubuntu
    24.04 Noble Numbat in merge request pipelines, skipping those for
    Ubuntu 22.04 Jammy Jellyfish and Ubuntu 20.04 Focal Fossa (while
    still running them in other pipeline types, e.g. in scheduled
    pipelines),

  - ensure every merge request is tested on Oracle Linux 8, which is the
    operating system with the oldest package versions out of the systems
    that are still supported by this BIND 9 branch,

  - decrease the number of test jobs run with sanitizers enabled while
    still testing with both ASAN and TSAN and both GCC and Clang for
    every merge request.

These changes do not affect the set of jobs created for any other
pipeline type (triggered by a schedule, by a GitLab API call, by the web
interface, etc.); only merge request pipelines are affected.

(cherry picked from commit 4ad8c86cf2)
2025-04-29 16:20:16 +00:00
Michal Nowak
b2a323dd70 [9.20] rem: ci: Drop OpenBSD from the CI
With the ongoing process of moving CI workloads to AWS, OpenBSD poses a
challenge, as there is no OpenBSD AMI image in the AWS catalog. Building
our image from scratch is disproportionately complicated, given that
OpenBSD is not a common deployment platform for BIND 9. Otherwise,
OpenBSD stays at the "Best-Effort" level of support.

Backport of MR !10375

Merge branch 'backport-mnowak/drop-openbsd-from-ci-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10428
2025-04-29 11:00:52 +00:00
Michal Nowak
545cabb177 Drop OpenBSD from the CI
With the ongoing process of moving CI workloads to AWS, OpenBSD poses a
challenge, as there is no OpenBSD AMI image in the AWS catalog. Building
our image from scratch is disproportionately complicated, given that
OpenBSD is not a common deployment platform for BIND 9. Otherwise,
OpenBSD stays at the "Best-Effort" level of support.

(cherry picked from commit 0dc9b4573d)
2025-04-29 10:56:01 +00:00
Matthijs Mekking
e14173668e [9.20] chg: test: Rewrite kasp system test to pytest (3)
Write python-based tests for the many test cases from the kasp system test with the same pattern.

Backport of MR !10268

Merge branch 'backport-matthijs-pytest-rewrite-kasp-system-test-3-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10421
2025-04-23 16:32:45 +00:00
Matthijs Mekking
3d1a763dff Parametrize the default kasp test cases
Make use of pytest.mark.parametrize to split up the many default kasp
test cases into separate tests.

(cherry picked from commit 7d670b7fe7)
2025-04-23 17:59:41 +02:00