]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
18 months agofix: usr: Fix race condition when canceling ADB find
Ondřej Surý [Wed, 13 Nov 2024 07:49:05 +0000 (07:49 +0000)] 
fix: usr: Fix race condition when canceling ADB find

When canceling the ADB find, the lock on the find gets released for
a brief period of time to be locked again inside adbname lock.  During
the brief period that the ADB find is unlocked, it can get canceled by
other means removing it from the adbname list which in turn causes
assertion failure due to a double removal from the adbname list.
This has been fixed.

Closes #5024

Merge branch '5024-fix-crash-in-dns_adb_cancelfind' into 'main'

See merge request isc-projects/bind9!9722

18 months agoRevalidate the adbname when canceling the ADB find
Ondřej Surý [Tue, 5 Nov 2024 13:59:16 +0000 (14:59 +0100)] 
Revalidate the adbname when canceling the ADB find

When canceling the ADB find, the lock on the find gets released for
a brief period of time to be locked again inside adbname lock.  During
the brief period that the ADB find is unlocked, it can get canceled by
other means removing it from the adbname list which in turn causes
assertion failure due to a double removal from the adbname list.

Recheck if the find->adbname is still valid after acquiring the lock
again and if not just skip the double removal.  Additionally, attach to
the adbname as in the worst case, the adbname might also cease to exist
if the scheduler would block this particular thread for a longer period
of time invalidating the lock we are going to acquire and release.

18 months agofix: test: minor fixes for extra_artifacts detection
Nicki Křížek [Tue, 12 Nov 2024 10:18:48 +0000 (10:18 +0000)] 
fix: test: minor fixes for extra_artifacts detection

Some omissions of !9426 discovered during the backports

Merge branch 'nicki/extra-artifacts-fixups' into 'main'

See merge request isc-projects/bind9!9739

18 months agoFix clean.sh removal omissions
Nicki Křížek [Tue, 12 Nov 2024 08:25:34 +0000 (09:25 +0100)] 
Fix clean.sh removal omissions

- Ensure keyfromlabel token is cleaned up

18 months agoEnsure pytest runner get proper outcome from flaky reruns
Nicki Křížek [Tue, 12 Nov 2024 09:07:02 +0000 (10:07 +0100)] 
Ensure pytest runner get proper outcome from flaky reruns

When a test is re-run by the flaky plugin, the TestReport outcomes
collected in the pytest_runtest_makereport() hook should be overriden.
Each of the setup/call/teardown phases is reported again and since we
care about the overall outcome, their respective results should be
overriden so that only the outcome from the final test (re)run gets
reported.

Prior to this change, it lead to a situation where an extra_artifact
generated during the test might be ignored. This was caused because the
check was skipped, since the test was incorrectly considered as "failed"
in the case where the test would fail on the first run, but pass on a
subsequent flaky rerun.

18 months agorem: usr: Remove RBTDB implementation
Ondřej Surý [Tue, 12 Nov 2024 08:26:28 +0000 (08:26 +0000)] 
rem: usr: Remove RBTDB implementation

Remove the RBTDB database implementation, and only leave the QPDB
based implementations of zone and cache databases.  This means
it's no longer possible to choose the RBTDB to be default at the
compilation time and it's not possible to configure RBTDB as the
database backend in the configuration file.

Closes #5027

Merge branch '5027-remove-rbtdb-implementation' into 'main'

See merge request isc-projects/bind9!9733

18 months agoRemove RBTDB implementation
Ondřej Surý [Sun, 3 Nov 2024 09:22:29 +0000 (10:22 +0100)] 
Remove RBTDB implementation

QPDB is now a default implementation for both cache and zone.  Remove
the venerable RBTDB database implementation, so we can fast-track the
changes to the database without having to implement the design changes
to both QPDB and RBTDB and this allows us to be more aggressive when
refactoring the database design.

18 months agochg: dev: Use lists of expected artifacts in system tests
Nicki Křížek [Fri, 8 Nov 2024 11:36:16 +0000 (11:36 +0000)] 
chg: dev: Use lists of expected artifacts in system tests

``clean.sh`` scripts have been replaced by lists of expected artifacts for each system test module. The list is defined using the custom ``pytest.mark.extra_artifacts`` mark, which can use both filenames and globs.

Closes #4261

Merge branch '4261-add-pytest-fixture-checking-test-artifacts' into 'main'

See merge request isc-projects/bind9!9426

18 months agoRemove invocations and mentions of clean.sh
Nicki Křížek [Mon, 26 Aug 2024 13:46:21 +0000 (15:46 +0200)] 
Remove invocations and mentions of clean.sh

18 months agoReplace clean.sh files with extra_artifacts mark
Nicki Křížek [Mon, 19 Aug 2024 16:54:13 +0000 (18:54 +0200)] 
Replace clean.sh files with extra_artifacts mark

The artifact lists in clean.sh and extra_artifacts might be slightly
different. The list was updated for each test to reflect the current
state.

18 months agoAdd pytest fixture for checking test artifacts
Michał Kępień [Mon, 19 Aug 2024 16:49:08 +0000 (18:49 +0200)] 
Add pytest fixture for checking test artifacts

Prior to introducing the pytest runner, clean.sh files were used as a
list of files that the test is expected to leave around as artifacts and
check that no extra files were created.

With the pytest runner, those scripts are no longer used, but the
ability to detect extraneous files is still useful. Add a new
"extra_artifacts" mark which can be used for the same purpose.

18 months agofix: dev: Fix a data race between dns_zone_getxfr() and dns_xfrin_create()
Arаm Sаrgsyаn [Thu, 7 Nov 2024 09:58:47 +0000 (09:58 +0000)] 
fix: dev: Fix a data race between dns_zone_getxfr() and dns_xfrin_create()

There is a data race between the statistics channel, which uses
`dns_zone_getxfr()` to get a reference to `zone->xfr`, and the creation
of `zone->xfr`, because the latter happens outside of a zone lock.

Split the `dns_xfrin_create()` function into two parts to separate the
zone transfer starting part from the zone transfer object creation part.
This allows us to attach the new object to a local variable first, then
attach it to `zone->xfr` under a lock, and only then start the transfer.

Closes #5011

Merge branch '5011-dns_zone_getxfr-race-fix' into 'main'

See merge request isc-projects/bind9!9716

18 months agoFix a data race between dns_zone_getxfr() and dns_xfrin_create()
Aram Sargsyan [Tue, 5 Nov 2024 10:28:37 +0000 (10:28 +0000)] 
Fix a data race between dns_zone_getxfr() and dns_xfrin_create()

There is a data race between the statistics channel, which uses
`dns_zone_getxfr()` to get a reference to `zone->xfr`, and the creation
of `zone->xfr`, because the latter happens outside of a zone lock.

Split the `dns_xfrin_create()` function into two parts to separate the
zone tranfer startring part from the zone transfer object creation part.
This allows us to attach the new object to a local variable first, then
attach it to `zone->xfr` under a lock, and only then start the transfer.

18 months agochg: dev: Enforce type checking for dns_dbversion_t
Ondřej Surý [Thu, 7 Nov 2024 07:23:02 +0000 (07:23 +0000)] 
chg: dev: Enforce type checking for dns_dbversion_t

Originally, the dns_dbversion_t was typedef'ed to void type.  This
allowed some flexibility, but using (void *) just removes any
type-checking that C might have.  Instead of using:

    typedef void dns_dbversion_t;

use a trick to define the type to non-existing structure:

    typedef struct dns_dbversion dns_dbversion_t;

This allows the C compilers to employ the type-checking while the
structure itself doesn't have to be ever defined because the actual
'storage' is never accessed using dns_dbversion_t type.

Merge branch 'ondrej/non-void-dns_dbversion_t' into 'main'

See merge request isc-projects/bind9!9724

18 months agoEnforce type checking for dns_dbversiont_t
Ondřej Surý [Tue, 5 Nov 2024 17:50:15 +0000 (18:50 +0100)] 
Enforce type checking for dns_dbversiont_t

Originally, the dns_dbversion_t was typedef'ed to void type.  This
allowed some flexibility, but using (void *) just removes any
type-checking that C might have.  Instead of using:

    typedef void dns_dbversion_t;

use a trick to define the type to non-existing structure:

    typedef struct dns_dbversion dns_dbversion_t;

This allows the C compilers to employ the type-checking while the
structure itself doesn't have to be ever defined because the actual
'storage' is never accessed using dns_dbversion_t type.

18 months agorem: nil: Remove named_g_sessionkey and named_g_sessionkeyname
Mark Andrews [Thu, 7 Nov 2024 02:17:17 +0000 (02:17 +0000)] 
rem: nil: Remove named_g_sessionkey and named_g_sessionkeyname

Remove named_g_sessionkey and named_g_sessionkeyname as they are declared and cleaned up but otherwise are unused.

Closes #5023

Merge branch '5023-remove-named_g_sessionkey-as-it-is-unused' into 'main'

See merge request isc-projects/bind9!9720

18 months agoRemove named_g_sessionkey and named_g_sessionkeyname
Mark Andrews [Tue, 5 Nov 2024 23:23:22 +0000 (10:23 +1100)] 
Remove named_g_sessionkey and named_g_sessionkeyname

They are only declared and cleaned up but otherwise unused.

18 months agofix: dev: Enforce type checking for dns_dbnode_t
Ondřej Surý [Wed, 6 Nov 2024 17:05:03 +0000 (17:05 +0000)] 
fix: dev: Enforce type checking for dns_dbnode_t

Originally, the dns_dbnode_t was typedef'ed to void type.  This allowed
some flexibility, but using (void *) just removes any type-checking that
C might have.  Instead of using:

    typedef void dns_dbnode_t;

use a trick to define the type to non-existing structure:

    typedef struct dns_dbnode dns_dbnode_t;

This allows the C compilers to employ the type-checking while the
structure itself doesn't have to be ever defined because the actual
'storage' is never accessed using dns_dbnode_t type.

Merge branch 'ondrej/non-void-dns_dbnode_t' into 'main'

See merge request isc-projects/bind9!9719

18 months agoEnforce type checking for dns_dbnode_t
Ondřej Surý [Tue, 5 Nov 2024 15:13:10 +0000 (16:13 +0100)] 
Enforce type checking for dns_dbnode_t

Originally, the dns_dbnode_t was typedef'ed to void type.  This allowed
some flexibility, but using (void *) just removes any type-checking that
C might have.  Instead of using:

    typedef void dns_dbnode_t;

use a trick to define the type to non-existing structure:

    typedef struct dns_dbnode dns_dbnode_t;

This allows the C compilers to employ the type-checking while the
structure itself doesn't have to be ever defined because the actual
'storage' is never accessed using dns_dbnode_t type.

18 months agochg: dev: Unify parsing of query-source and other X-source options
Alessio Podda [Tue, 5 Nov 2024 09:36:19 +0000 (09:36 +0000)] 
chg: dev: Unify parsing of query-source and other X-source options

The query-source option currently allows the address to be specified in two ways, either as every other X-source option, or as an
"address" key-value pair.
This merge request extends the `parse_sockaddrsub` config parsing function so that it can parse the query-source option. It also removes the separate config parsing function for `query-source`.

Closes #4961

Merge branch '4961-query-source-parsing-refactor' into 'main'

See merge request isc-projects/bind9!9551

18 months agoMerge parse_querysource and parse_sockaddrsub
Alessio Podda [Mon, 23 Sep 2024 03:01:47 +0000 (05:01 +0200)] 
Merge parse_querysource and parse_sockaddrsub

The query-source option has the slight quirk of allowing the address to
be specified in two ways, either as every other source option, or as an
"address" key-value pair.
For this reason, it had a separate parsing function from other X-source
options, but it is possible to extend the parsing of other X-sources to
be generic and also handle query-source.
This commit just does that.

18 months agofix: nil: Add OpenSSL includes as needed
Ondřej Surý [Mon, 4 Nov 2024 23:36:09 +0000 (23:36 +0000)] 
fix: nil: Add OpenSSL includes as needed

The isc/crypto.h now directly includes the OpenSSL headers (evp.h) and
any application that includes that header also needs to have
OPENSSL_CFLAGS in the Makefile.am.  Adjust the required automake files
as needed.

Merge branch 'ondrej/add-missing-OPENSSL_CFLAGS' into 'main'

See merge request isc-projects/bind9!9713

18 months agoAdd OpenSSL includes as needed
Ondřej Surý [Mon, 4 Nov 2024 15:13:45 +0000 (15:13 +0000)] 
Add OpenSSL includes as needed

The isc/crypto.h now directly includes the OpenSSL headers (evp.h) and
any application that includes that header also needs to have
OPENSSL_CFLAGS in the Makefile.am.  Adjust the required automake files
as needed.

18 months agochg: usr: Print expire option in transfer summary.
Mark Andrews [Mon, 4 Nov 2024 18:26:49 +0000 (18:26 +0000)] 
chg: usr: Print expire option in transfer summary.

The zone transfer summary will now print the expire option value in the zone transfer summary.

Closes #5013

Merge branch '5013-print-expire-option-in-transfer-summary' into 'main'

See merge request isc-projects/bind9!9694

18 months agoUpdate zone transfer summary
Mark Andrews [Fri, 25 Oct 2024 20:50:23 +0000 (07:50 +1100)] 
Update zone transfer summary

Print the expire option in the zone transfer summary. This is
currently emitted in a DEBUG(1) message.

18 months agofix: nil: TLS notify checks fail on OL 8 FIPS
Mark Andrews [Sat, 2 Nov 2024 05:59:09 +0000 (05:59 +0000)] 
fix: nil: TLS notify checks fail on OL 8 FIPS

Add missing checks for `$FEATURETEST --have-fips-dh` in notify system test to match those in setup.sh.

Closes #5015

Merge branch '5015-tls-notify-checks-fail-on-ol-8-fips' into 'main'

See merge request isc-projects/bind9!9707

18 months agoAdd missing $FEATURETEST --have-fips-dh
Mark Andrews [Thu, 31 Oct 2024 21:42:41 +0000 (08:42 +1100)] 
Add missing $FEATURETEST --have-fips-dh

Notify over TLS only works if FIPS DH is supported.  Skip the system
tests parts that depend on it.

18 months agochg: usr: dnssec-ksr now supports KSK rollovers
Matthijs Mekking [Fri, 1 Nov 2024 15:29:37 +0000 (15:29 +0000)] 
chg: usr: dnssec-ksr now supports KSK rollovers

The tool 'dnssec-ksr' now allows for KSK generation, as well as planned KSK rollovers. When signing a bundle from a Key Signing Request (KSR), only the key that is active in that time frame is being used for signing. Also, the CDS and CDNSKEY records are now added and removed at the correct time.

Closes #4697

Closes #4705

Merge branch '4705-dnssec-ksr-only-sign-with-active-ksks' into 'main'

See merge request isc-projects/bind9!9452

18 months agoFix dnssec-ksr to support KSK rollovers
Matthijs Mekking [Wed, 4 Sep 2024 14:00:13 +0000 (16:00 +0200)] 
Fix dnssec-ksr to support KSK rollovers

dnssec-ksr can now sign KSR files with multiple KSKs. A planned KSK
rollover is supported, meaning the KSR will first be signed with
one KSK and later with another. The timing metadata for CDS and
CDNSKEY records are also taken into account, so these records are
only published when the time is between "SyncPublish" and "SyncDelete".

18 months agoAdd KSK roll test case
Matthijs Mekking [Wed, 4 Sep 2024 13:57:55 +0000 (15:57 +0200)] 
Add KSK roll test case

Add a test case for Offline KSK where during the lifespan of the Signed
Key Response a KSK rollover happens. Ensure that the correct DNSKEY,
CDNSKEY, and CDS records are published at the right times.

18 months agoAllow empty CDNSKEY/CDS RRset in ksr system test
Matthijs Mekking [Wed, 4 Sep 2024 13:54:53 +0000 (15:54 +0200)] 
Allow empty CDNSKEY/CDS RRset in ksr system test

When the zone is initially signed, the CDNSKEY/CDS RRset is not
immediately published. The DNSKEY and signatures must propagate first.
Adjust the test to allow for this case.

18 months agodnssec-ksr keygen -o to create KSKs
Matthijs Mekking [Tue, 3 Sep 2024 15:24:22 +0000 (17:24 +0200)] 
dnssec-ksr keygen -o to create KSKs

Add an option to dnssec-ksr keygen, -o, to create KSKs instead of ZSKs.
This way, we can create a set of KSKS for a given period too.

For KSKs we also need to set timing metadata, including "SyncPublish"
and "SyncDelete". This functionality already exists in keymgr.c so
let's make the function accessible.

Replace dnssec-keygen calls with dnssec-ksr keygen for KSK in the
ksr system test and check keys for created KSKs as well. This requires
a slight modification of the check_keys function to take into account
KSK timings and metadata.

18 months agoAdd -f option to dnssec-ksr documentation
Matthijs Mekking [Tue, 3 Sep 2024 14:02:24 +0000 (16:02 +0200)] 
Add -f option to dnssec-ksr documentation

This was previously left out by error.

18 months agochg: test: Match algorithms when checking signatures
Matthijs Mekking [Fri, 1 Nov 2024 14:15:49 +0000 (14:15 +0000)] 
chg: test: Match algorithms when checking signatures

In the ksr system test, the 'test_ksr_twotone' case may fail if there are two keys with the same keytag (but different algorithms), because one key is expected to be signing and the other is not.

Switch to regular expression matching and include the algorithm in the search string.

Closes #5017

Merge branch '5017-unexpected-match-ksr-twotone-again' into 'main'

See merge request isc-projects/bind9!9701

18 months agoMatch algorithms when checking signatures
Matthijs Mekking [Thu, 31 Oct 2024 10:25:23 +0000 (11:25 +0100)] 
Match algorithms when checking signatures

In the ksr system test, the test_ksr_twotone case may fail if there
are two keys with the same keytag (but different algorithms), because
one key is expected to be signing and the other is not.

Switch to regular expression matching and include the algorithm in the
search string.

18 months agochg: test: Rewrite rsabigexponent system test to pytest
Michal Nowak [Thu, 31 Oct 2024 18:12:21 +0000 (18:12 +0000)] 
chg: test: Rewrite rsabigexponent system test to pytest

Merge branch 'mnowak/pytest_rewrite_rsabigexponent' into 'main'

See merge request isc-projects/bind9!9157

18 months agoRewrite rsabigexponent system test to pytest
Michal Nowak [Thu, 18 Jul 2024 14:10:49 +0000 (16:10 +0200)] 
Rewrite rsabigexponent system test to pytest

18 months agofix: doc: Remove the CHANGES file
Michal Nowak [Thu, 31 Oct 2024 16:46:11 +0000 (16:46 +0000)] 
fix: doc: Remove the CHANGES file

With the introduction of the generated changelog, the CHANGES file
became a symlink to doc/arm/changelog.rst. After the changes made in
!9549, the changelog file transitioned from being a wholly generated
file to one that includes versioned changelog files, which are
themselves generated. However, while implementing !9549, we overlooked
that the CHANGES file is copied to a release directory on an FTP server
and contains just "include" directives, not the changelog itself.
Therefore, in the same fashion as the "RELEASE-NOTES*.html" file, create
a "CHANGELOG*.html" file that redirects to the Changelog appendix of the
ARM.

Closes #5000

Merge branch '5000-provide-correct-changelog-on-ftp' into 'main'

See merge request isc-projects/bind9!9690

18 months agoFix changelog history header
Michal Nowak [Thu, 24 Oct 2024 15:05:15 +0000 (17:05 +0200)] 
Fix changelog history header

18 months agoRemove the CHANGES file
Michal Nowak [Thu, 24 Oct 2024 15:01:57 +0000 (17:01 +0200)] 
Remove the CHANGES file

With the introduction of the generated changelog, the CHANGES file
became a symlink to doc/arm/changelog.rst. After the changes made in
!9549, the changelog file transitioned from being a wholly generated
file to one that includes versioned changelog files, which are
themselves generated. However, while implementing !9549, we overlooked
that the CHANGES file is copied to a release directory on an FTP server
and contains just "include" directives, not the changelog itself.
Therefore, in the same fashion as the "RELEASE-NOTES*.html" file, create
a "CHANGELOG*.html" file that redirects to the Changelog appendix of the
ARM.

18 months agonew: dev: Support jinja2 templates in pytest runner
Nicki Křížek [Thu, 31 Oct 2024 09:40:02 +0000 (09:40 +0000)] 
new: dev: Support jinja2 templates in pytest runner

Configuration files in system tests which require some variables (e.g.
port numbers) filled in during test setup, can now use jinja2 templates
when `jinja2` python package is available.

Any `*.j2` file found within the system test directory will be
automatically rendered with the environment variables into a file
without the `.j2` extension by the pytest runner. E.g.
`ns1/named.conf.j2` will become `ns1/named.conf` during test setup. To
avoid automatic rendering, use `.j2.manual` extension and render the
files manually at test time.

New `templates` pytest fixture has been added. Its `render()` function
can be used to render a template with custom test variables. This can be
useful to fill in different config options during the test. With
advanced jinja2 template syntax, it can also be used to include/omit
entire sections of the config file rather than using `named1.conf.in`,
`named2.conf.in` etc.

Closes #4938

Merge branch '4938-use-jinja2-templates-in-system-tests' into 'main'

See merge request isc-projects/bind9!9587

18 months agoSupport jinja2 templates in pytest runner
Nicki Křížek [Tue, 1 Oct 2024 12:45:36 +0000 (14:45 +0200)] 
Support jinja2 templates in pytest runner

Configuration files in system tests which require some variables (e.g.
port numbers) filled in during test setup, can now use jinja2 templates
when `jinja2` python package is available.

Any `*.j2` file found within the system test directory will be
automatically rendered with the environment variables into a file
without the `.j2` extension by the pytest runner. E.g.
`ns1/named.conf.j2` will become `ns1/named.conf` during test setup. To
avoid automatic rendering, use `.j2.manual` extension and render the
files manually at test time.

New `templates` pytest fixture has been added. Its `render()` function
can be used to render a template with custom test variables. This can be
useful to fill in different config options during the test. With
advanced jinja2 template syntax, it can also be used to include/omit
entire sections of the config file rather than using `named1.conf.in`,
`named2.conf.in` etc.

18 months agochg: usr: Add missing EDNS option mnemonics
Evan Hunt [Tue, 29 Oct 2024 20:05:52 +0000 (20:05 +0000)] 
chg: usr: Add missing EDNS option mnemonics

The `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`.

Several other EDNS option names, including `DAU`, `DHU`, `N3U`, and `CHAIN`, are now displayed correctly in text and YAML formats. Also, an inconsistency has been corrected: the `TCP-KEEPALIVE` option is now spelled with a hyphen in both text and YAML formats; previously, text format used a space.

Merge branch 'each-add-missing-edns-opts' into 'main'

See merge request isc-projects/bind9!9691

18 months agorefactor, add missing EDNS options, and fix option names
Evan Hunt [Thu, 24 Oct 2024 23:55:31 +0000 (16:55 -0700)] 
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.

18 months agoadd missing EDNS option mnemonics to dig
Evan Hunt [Thu, 24 Oct 2024 21:51:58 +0000 (14:51 -0700)] 
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`.

18 months agochg: ci: Make changelog audience mandatory
Nicki Křížek [Tue, 29 Oct 2024 16:02:43 +0000 (16:02 +0000)] 
chg: ci: Make changelog audience mandatory

Merge branch 'nicki/harazd-enforce-mr-title-audience' into 'main'

See merge request isc-projects/bind9!9628

18 months agoMake changelog audience mandatory
Nicki Křížek [Mon, 14 Oct 2024 17:32:39 +0000 (19:32 +0200)] 
Make changelog audience mandatory

Use a stricter hazard check which ensures the audience tag is present in
the MR title and is one of the known values. This prevents siuations
where incorrect audience is accidentally used, resulting in a missing
changelog entry or a release note.

18 months agofix: test: Fix CID 510858: Null ptr derefs in check_keys
Matthijs Mekking [Fri, 25 Oct 2024 11:20:03 +0000 (11:20 +0000)] 
fix: test: Fix CID 510858: Null ptr derefs in check_keys

Coverity Scan reported a new issue for the ksr system test. There is allegedly a null pointer dereference (FORWARD_NULL) in check_keys().

This popped up because previously we set 'retired' to 0 in case of unlimited lifetime, but we changed it to None.

It is actually a false positive, because if lifetime is unlimited there will be only one key in 'keys'.

However, the code would be better if we always initialized 'active' and if it is not the first key and retired is set, set the successor key's active time to the retire time of the predecessor key.

Closes #5004

Merge branch '5004-cid-510858-ksr-check-keys' into 'main'

See merge request isc-projects/bind9!9687

18 months agoFix CID 510858: Null ptr derefs in check_keys
Matthijs Mekking [Thu, 24 Oct 2024 12:03:58 +0000 (14:03 +0200)] 
Fix CID 510858: Null ptr derefs in check_keys

Coverity Scan reported a new issue for the ksr system test. There
is allegedly a null pointer dereference (FORWARD_NULL) in check_keys().

This popped up because previously we set 'retired' to 0 in case of
unlimited lifetime, but we changed it to None.

It is actually a false positive, because if lifetime is unlimited
there will be only one key in 'keys'.

However, the code would be better if we always initialized 'active'
and if it is not the first key and retired is set, set the successor
key's active time to the retire time of the predecessor key.

18 months agofix: test: Fix intermittent ksr test failure
Matthijs Mekking [Fri, 25 Oct 2024 07:43:28 +0000 (07:43 +0000)] 
fix: test: Fix intermittent ksr test failure

A test may fail if the key id is shorter than 5 digits. Add a leading space to the expected strings which start with the key tag to avoid the issue.

Closes #5002

Merge branch '5002-unexpected-match-ksr-twotwone' into 'main'

See merge request isc-projects/bind9!9688

18 months agoFix intermittent ksr test failure
Matthijs Mekking [Thu, 24 Oct 2024 12:30:51 +0000 (14:30 +0200)] 
Fix intermittent ksr test failure

The test_ksr_twotwone may fail if the key id is shorter than 5 digits.
Add a leading space to the expected strings which start with the key
tag to avoid the issue.

18 months agofix: test: Make system tests compatible with pytest 8.0.0+
Nicki Křížek [Thu, 24 Oct 2024 11:53:54 +0000 (11:53 +0000)] 
fix: test: Make system tests compatible with pytest 8.0.0+

Make system tests symlinks and logged test names consistent across pytest versions.

Merge branch 'nicki/pytest-v8-compat' into 'main'

See merge request isc-projects/bind9!9071

18 months agoAdd legacy.run.sh to .gitignore
Nicki Křížek [Mon, 27 May 2024 14:24:35 +0000 (16:24 +0200)] 
Add legacy.run.sh to .gitignore

While this file is no longer created / used in the main branch, it may
linger around when switching from maintenance branches.

18 months agoMake system tests compatible with pytest 8.0.0+
Nicki Křížek [Mon, 27 May 2024 14:10:04 +0000 (16:10 +0200)] 
Make system tests compatible with pytest 8.0.0+

The pytest collection mechanism has been overhauled in pytest 8.0.0,
resulting in a different node tree when collecting the tests. Ensure the
paths / names we're using that are derived from the node tree are
consistent across different pytest versions.

Particularly, this has affected the convenience symlink name (which is
supposed to be in the form of e.g. dns64_sh_dns64 for the dns64 module
and tests_sh_dns64.py module) and the test name that's logged at the
start of the test, which is supposed to include the system test
directory relative to the root system test directory as well as the
module name (e.g. dns64/tests_sh_dns64.py).

Related https://github.com/pytest-dev/pytest/issues/7777

18 months agofix: usr: Use TLS for notifies if configured to do so
Mark Andrews [Thu, 24 Oct 2024 03:10:38 +0000 (03:10 +0000)] 
fix: usr: Use TLS for notifies if configured to do so

Notifies configured to use TLS will now be sent over TLS, instead of plaintext UDP or TCP.
Also, failing to load the TLS configuration for notify now also results in an error.

Closes #4821

Merge branch '4821-notify-over-tls' into 'main'

See merge request isc-projects/bind9!9407

18 months agoUse correct certificates for TLS notify tests
Timo Eisenmann [Wed, 18 Sep 2024 17:40:30 +0000 (19:40 +0200)] 
Use correct certificates for TLS notify tests

Use tls-forward-secrecy instead of tls-expired for tls-x2 and regenerate
the expired certificate for tls-x6 to reflect the swap of ns2 and ns3.

18 months agoswap ns2 and ns3 rolls in tls notify tests
Mark Andrews [Wed, 18 Sep 2024 05:52:42 +0000 (15:52 +1000)] 
swap ns2 and ns3 rolls in tls notify tests

Still need to regenerate the expired certificate as it has
the wrong IP address

18 months agoAdd system tests for notify over TLS
Timo Eisenmann [Thu, 29 Aug 2024 13:44:40 +0000 (15:44 +0200)] 
Add system tests for notify over TLS

We use ns2 as the primary, and ns3 as the secondary server.

18 months agoUse TLS for notifies if configured to do so
Timo Eisenmann [Thu, 22 Aug 2024 14:58:18 +0000 (16:58 +0200)] 
Use TLS for notifies if configured to do so

18 months agofix: dev: Transport needs to be a selector when looking for an existing dispatch
Mark Andrews [Thu, 24 Oct 2024 01:20:51 +0000 (01:20 +0000)] 
fix: dev: Transport needs to be a selector when looking for an existing dispatch

This allows for dispatch to use existing TCP/HTTPS/TLS etc. streams without accidentally using an unexpected transport.

Closes #4989

Merge branch '4989-fix-transport-use-with-dispatch' into 'main'

See merge request isc-projects/bind9!9633

18 months agoFix TCP dispatches and transport
Mark Andrews [Tue, 15 Oct 2024 05:09:48 +0000 (16:09 +1100)] 
Fix TCP dispatches and transport

Dispatch needs to know the transport that is being used over the
TCP connection to correctly allow for it to be reused.  Add a
transport parameter to dns_dispatch_createtcp and dns_dispatch_gettcp
and use it when selecting a TCP socket for reuse.

18 months agonew: usr: Implement RFC 9567: EDNS Report-Channel option
Evan Hunt [Wed, 23 Oct 2024 21:29:55 +0000 (21:29 +0000)] 
new: usr: Implement RFC 9567: EDNS Report-Channel option

Add new `send-report-channel` and `log-report-channel` options. `send-report-channel` specifies an agent domain, to which error reports can be sent by querying a specially constructed name within the agent domain. EDNS Report-Channel options will be added to outgoing authoritative responses, to inform clients where to send such queries in the event of a problem.

If a zone is configured which matches the agent domain and has `log-report-channel` set to `yes`, error-reporting queries will be logged at level `info` to the `dns-reporting-agent` logging channel.

Closes #3659

Merge branch '3659-implement-draft-ietf-dnsop-dns-error-reporting' into 'main'

See merge request isc-projects/bind9!7036

18 months agosuppress report-channel for zones above the agent-domain
Evan Hunt [Tue, 22 Oct 2024 20:48:58 +0000 (13:48 -0700)] 
suppress report-channel for zones above the agent-domain

RFC 9567 section 8.1 specifies that the agent domain cannot
be a subdomain of the domain it is reporting on. therefore,
in addition to making it illegal to configure that at the
zone level, we also need to disable send-report-channel for
any zone for which the global send-report-channel value is
a subdomain.

we also now warn if send-report-channel is configured
globally to a zone that we host, but that zone doesn't
have log-report-channel set.

18 months agoexpand validity checks for send-report-channel
Evan Hunt [Mon, 21 Oct 2024 05:36:17 +0000 (22:36 -0700)] 
expand validity checks for send-report-channel

when configured at the zone level, send-report-channel cannot be
a subdomain of the zone name.

18 months agoenforce '*._er' requirement for error-reporting zones
Evan Hunt [Sun, 20 Oct 2024 08:04:06 +0000 (01:04 -0700)] 
enforce '*._er' requirement for error-reporting zones

if "log-report-channel" is set to "yes", then the zone must
contain a wildcard name matching '*._er' with a TXT record.

18 months agoset up logging functionality using log-report-channel
Evan Hunt [Sun, 20 Oct 2024 01:16:35 +0000 (18:16 -0700)] 
set up logging functionality using log-report-channel

the logging of error-report queries is no longer activated by
the view's "send-report-channel" option; that now only configures
the agent-domain value that is to be sent in authoritative
responses. the warning that was logged when "send-agent-domain"
was set to a value that is not a locally configured zone has
been removed.

error-report logging is now activated by the presence of an
authoritative zone with the "log-report-channel" option set to
"yes".  this is not permitted in the root zone.

NOTE: a zone with "log-report-channel yes;" should contain a
"*._er" wildcard, but that requirement is not yet enforced.

18 months agoadd log-report-channel zone option
Evan Hunt [Sat, 19 Oct 2024 20:26:38 +0000 (13:26 -0700)] 
add log-report-channel zone option

add a boolean "log-report-channel" option for primary and
secondary zones, which sets the DNS_ZONEOPT_LOGREPORTS zone
flag. this option is not yet functional.

18 months agoAllow send-report-channel to be set at the zone level
Mark Andrews [Wed, 15 May 2024 04:10:43 +0000 (14:10 +1000)] 
Allow send-report-channel to be set at the zone level

If send-report-channel is set at the zone level, it will
be stored in the zone object and used instead of the
view-level agent-domain when constructing the EDNS
Report-Channel option.

18 months agoAdd send-report-channel option
Mark Andrews [Sun, 6 Nov 2022 14:18:44 +0000 (14:18 +0000)] 
Add send-report-channel option

This commit adds support for the EDNS Report-Channel option,
which is returned in authoritative responses when EDNS is in use.

"send-report-channel" sets the Agent-Domain value that will be
included in EDNS Report-Channel options.  This is configurable at
the options/view level; the value is a DNS name. Setting the
Agent-Domain to the root zone (".") disables the option.

When this value has been set, incoming queries matchng the form
_er.<qtype>.<qname>.<extended-error-code>._er.<agent-domain>/TXT
will be logged to the dns-reporting-agent channel at INFO level.

(Note: error reporting queries will only be accepted if sent via
TCP or with a good server cookie.  If neither is present, named
returns BADCOOKIE to complete the DNS COOKIE handshake, or TC=1
to switch the client to TCP.)

18 months agonew: usr: Add detailed debugging of update-policy rule matching
Mark Andrews [Wed, 23 Oct 2024 20:29:11 +0000 (20:29 +0000)] 
new: usr: Add detailed debugging of update-policy rule matching

This logs how named determines if an update request is granted or denied when using update-policy.

Closes #4751

Merge branch '4751-provide-debug-level-logging-of-update-policy' into 'main'

See merge request isc-projects/bind9!9074

18 months agoCheck update-policy logs
Mark Andrews [Thu, 30 May 2024 03:52:55 +0000 (13:52 +1000)] 
Check update-policy logs

18 months agoAdd per rule logging of dns_ssutable_checkrules processing
Mark Andrews [Wed, 29 May 2024 05:04:37 +0000 (15:04 +1000)] 
Add per rule logging of dns_ssutable_checkrules processing

These are logged to the update category at debug level 99 and
have the following form.

    update-policy: using: signer=ddns-key.example.nil, name=updated.example.nil, addr=10.53.0.1, tcp=0, type=A, target=
    update-policy: trying: grant zonesub-key.example.nil zonesub TXT
    update-policy: next rule: signer does not match identity
    update-policy: trying: grant ddns-key.example.nil zonesub ANY
    update-policy: matched: grant ddns-key.example.nil zonesub ANY

or

    update-policy: using: signer=restricted.example.nil, name=example.nil, addr=10.53.0.1, tcp=0, type=TXT, target=
    update-policy: trying: grant zonesub-key.example.nil zonesub TXT
    update-policy: next rule: signer does not match identity
    update-policy: trying: grant ddns-key.example.nil zonesub ANY
    update-policy: next rule: signer does not match identity
    update-policy: trying: grant restricted.example.nil zonesub ANY
    update-policy: next rule: name/subdomain mismatch
    update-policy: no match found

where 'using:' is the calling parameters of dns_ssutable_checkrules,
'trying:' in the rule bing evaluated, "next rule:" is the reason
the rule does not match, "matched:" repeats the matched rule, and
no match found is reported when te set of rules is exhausted.

18 months agoAdd log category update-policy
Mark Andrews [Wed, 28 Aug 2024 04:12:05 +0000 (14:12 +1000)] 
Add log category update-policy

18 months agofix: test: Use UTC timezone when handling keys in kasp test library
Nicki Křížek [Tue, 22 Oct 2024 08:20:25 +0000 (08:20 +0000)] 
fix: test: Use UTC timezone when handling keys in kasp test library

When working with key timestamps, ensure we correctly set the UTC
timezone in order for the tests to work consistently regardless of the
local time setting.

Closes #4999

Merge branch '4999-pytest-kasp-use-utc-timezone' into 'main'

See merge request isc-projects/bind9!9673

18 months agoSet TZ to Australia/Sydney for bookworm CI job
Nicki Křížek [Mon, 21 Oct 2024 10:18:43 +0000 (12:18 +0200)] 
Set TZ to Australia/Sydney for bookworm CI job

Use a different timezone via the TZ variable in at least one of the
system test jobs in order to detect possible issues with timezone
handling in python.

18 months agoUse UTC timezone when handling keys in kasp test library
Nicki Křížek [Mon, 21 Oct 2024 10:08:52 +0000 (12:08 +0200)] 
Use UTC timezone when handling keys in kasp test library

When working with key timestamps, ensure we correctly set the UTC
timezone in order for the tests to work consistently regardless of the
local time setting.

18 months agofix: usr: Parsing of hostnames in rndc.conf was broken
Mark Andrews [Tue, 22 Oct 2024 00:11:39 +0000 (00:11 +0000)] 
fix: usr:  Parsing of hostnames in rndc.conf was broken

When DSCP support was removed, parsing of hostnames in rndc.conf was accidentally broken, resulting in an assertion failure.  This has been fixed.

Closes #4991

Merge branch '4991-rndc-fix-parsing-hostnames' into 'main'

See merge request isc-projects/bind9!9669

18 months agoAdd regression test for [GL #4991]
Mark Andrews [Mon, 21 Oct 2024 00:43:29 +0000 (11:43 +1100)] 
Add regression test for [GL #4991]

18 months agoFix parsing of hostnames in rndc.conf
Mark Andrews [Mon, 21 Oct 2024 00:34:32 +0000 (11:34 +1100)] 
Fix parsing of hostnames in rndc.conf

When DSCP was removed the parsing of hostnames was accidentally
broken resulting in an assertion failure.  Call cfg_parse_tuple
rather than using custom code in parse_sockaddrnameport.

18 months agochg: test: Rewrite verify system test to pytest
Michal Nowak [Mon, 21 Oct 2024 11:59:00 +0000 (11:59 +0000)] 
chg: test: Rewrite verify system test to pytest

Merge branch 'mnowak/pytest_rewrite_verify' into 'main'

See merge request isc-projects/bind9!9249

18 months agoRewrite verify system test to pytest
Michal Nowak [Thu, 1 Aug 2024 19:35:29 +0000 (21:35 +0200)] 
Rewrite verify system test to pytest

18 months agochg: doc: Review BIND ARM (9.20 updates)
Nicki Křížek [Mon, 21 Oct 2024 11:50:39 +0000 (11:50 +0000)] 
chg: doc: Review BIND ARM (9.20 updates)

Forward-port of !9508

Closes #4945

Merge branch '4945-bind-arm-review-9.20-updates' into 'main'

See merge request isc-projects/bind9!9668

19 months agoReview and update ARM documentation
Suzanne Goldlust [Tue, 17 Sep 2024 21:23:08 +0000 (21:23 +0000)] 
Review and update ARM documentation

Minor edits and fixes for the documentation added from 9.18.28 through
9.20.0.

(cherry picked from commit 998c61c1cfdbe89a91a56acc8132c5b05bc2acec)

19 months agochg: test: xfail upforwd system test if DNSTAP is enabled
Michal Nowak [Mon, 21 Oct 2024 10:52:26 +0000 (10:52 +0000)] 
chg: test: xfail upforwd system test if DNSTAP is enabled

See isc-projects/bind9#4996

Merge branch 'mnowak/mark-upforwd-xfail' into 'main'

See merge request isc-projects/bind9!9662

19 months agoxfail upforwd system test if DNSTAP is enabled
Michal Nowak [Thu, 17 Oct 2024 12:26:57 +0000 (14:26 +0200)] 
xfail upforwd system test if DNSTAP is enabled

19 months agoAdd with_dnstap mark
Michal Nowak [Thu, 17 Oct 2024 12:26:32 +0000 (14:26 +0200)] 
Add with_dnstap mark

19 months agofix: doc: All footnotes need to have unique name and be referenced
Michal Nowak [Mon, 21 Oct 2024 07:23:10 +0000 (07:23 +0000)] 
fix: doc: All footnotes need to have unique name and be referenced

With Sphinx 8.1.0, footnotes can't stand on their own and have to be
referenced from somewhere, otherwise build fails, e.g.:

    doc/dnssec-guide/signing.rst:1470: WARNING: Footnote [#] is not referenced. [ref.footnote]

Merge branch 'mnowak/fix-dnssec-guide-footnote' into 'main'

See merge request isc-projects/bind9!9663

19 months agoAll footnotes need to have unique name and be referenced
Michal Nowak [Thu, 17 Oct 2024 17:49:17 +0000 (19:49 +0200)] 
All footnotes need to have unique name and be referenced

With Sphinx 8.1.0, footnotes can't stand on their own and have to be
referenced from somewhere, otherwise build fails, e.g.:

    doc/dnssec-guide/signing.rst:1470: WARNING: Footnote [#] is not referenced. [ref.footnote]

19 months agofix: nil: corrected code style errors
Evan Hunt [Fri, 18 Oct 2024 19:31:40 +0000 (19:31 +0000)] 
fix: nil: corrected code style errors

- add missing brackets around one-line statements
- add paretheses around return values

Merge branch 'each-style-corrections' into 'main'

See merge request isc-projects/bind9!9664

19 months agocorrected code style errors
Evan Hunt [Thu, 17 Oct 2024 20:22:48 +0000 (13:22 -0700)] 
corrected code style errors

- add missing brackets around one-line statements
- add paretheses around return values

19 months agofix: usr: Restore values when dig prints command line
Mark Andrews [Fri, 18 Oct 2024 02:09:38 +0000 (02:09 +0000)] 
fix: usr:  Restore values when dig prints command line

Options of the form `[+-]option=<value>` failed to display the value on the printed command line. This has been fixed.

Closes #4993

Merge branch '4993-dig-restore-command-line-values' into 'main'

See merge request isc-projects/bind9!9653

19 months agoCorrectly get final token
Mark Andrews [Thu, 17 Oct 2024 01:31:25 +0000 (12:31 +1100)] 
Correctly get final token

19 months agoRestore seperator values
Mark Andrews [Thu, 17 Oct 2024 01:03:22 +0000 (12:03 +1100)] 
Restore seperator values

strtok_r is destructive.  Restore the seperators so that the command
line can be properly displayed.

19 months agofix: import missing definitions for fips builds
Aydın Mercan [Thu, 17 Oct 2024 14:54:52 +0000 (14:54 +0000)] 
fix: import missing definitions for fips builds

FIPS build of libisc failed from some missing definitions.

Closes #4994

Merge branch '4994-crypto-c-174-7-error-implicit-declaration-of-function-isc_fips_mode' into 'main'

See merge request isc-projects/bind9!9655

19 months agoinclude missing definitions for fips builds
Aydın Mercan [Thu, 17 Oct 2024 05:35:06 +0000 (08:35 +0300)] 
include missing definitions for fips builds

19 months agochg: doc: Read the Docs should always source requirements.txt from "main"
Michal Nowak [Thu, 17 Oct 2024 10:47:11 +0000 (10:47 +0000)] 
chg: doc: Read the Docs should always source requirements.txt from "main"

HTTP URI of doc/arm/requirements.txt on the "main" branch is the source
of PyPI packages in CI base image. To make it consistent in all
maintained CI branches on RTD, use the HTTP URI as well.

This change is non-material on the "main" branch, but ensures the right
packages on stable branches where for RTD we currently leverage outdated
packages because we failed to update doc/arm/requirements.txt there.

Merge branch 'mnowak/rtd-always-resource-requirements-txt-from-main' into 'main'

See merge request isc-projects/bind9!9630

19 months agoRead the Docs should always source requirements.txt from "main"
Michal Nowak [Mon, 14 Oct 2024 18:17:28 +0000 (20:17 +0200)] 
Read the Docs should always source requirements.txt from "main"

HTTP URI of doc/arm/requirements.txt on the "main" branch is the source
of PyPI packages in CI base image. To make it consistent in all
maintained CI branches on RTD, use the HTTP URI as well.

This change is non-material on the "main" branch, but ensures the right
packages on stable branches where for RTD we currently leverage outdated
packages because we failed to update doc/arm/requirements.txt there.

19 months agochg: doc: Update Sphinx, docutils, and sphinx_rtd_theme packages
Michal Nowak [Thu, 17 Oct 2024 10:08:55 +0000 (10:08 +0000)] 
chg: doc: Update Sphinx, docutils, and sphinx_rtd_theme packages

Merge branch 'mnowak/doc-tools-october-2024-updates' into 'main'

See merge request isc-projects/bind9!9652

19 months agoAdd RFCs referenced by footnotes
Michal Nowak [Wed, 16 Oct 2024 18:04:55 +0000 (20:04 +0200)] 
Add RFCs referenced by footnotes

With Sphinx 8.1.0, footnotes can't stand on their own and have
referenced from somewhere:

    /builds/isc-projects/bind9/doc/arm/general.rst:439: WARNING: Footnote [#] is not referenced. [ref.footnote]
    /builds/isc-projects/bind9/doc/arm/general.rst:441: WARNING: Footnote [#] is not referenced. [ref.footnote]
    /builds/isc-projects/bind9/doc/arm/general.rst:445: WARNING: Footnote [#] is not referenced. [ref.footnote]
    /builds/isc-projects/bind9/doc/arm/general.rst:457: WARNING: Footnote [#] is not referenced. [ref.footnote]

19 months agoUpdate Sphinx, docutils, and sphinx_rtd_theme packages
Michal Nowak [Wed, 16 Oct 2024 16:12:04 +0000 (18:12 +0200)] 
Update Sphinx, docutils, and sphinx_rtd_theme packages