]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
22 months agoFix the resesuid() shim implementation for NetBSD
Ondřej Surý [Tue, 20 Aug 2024 07:14:31 +0000 (09:14 +0200)] 
Fix the resesuid() shim implementation for NetBSD

The shim implementation of setresuid() was wrong - there was a copy and
paste error and it was calling setresgid() instead.  This only affects
NetBSD because Linux, FreeBSD and OpenBSD have setresuid() and
setresgid() implementation available from the system library.

22 months agochg: doc: Set up version for BIND 9.21.1
Petr Špaček [Tue, 20 Aug 2024 09:04:50 +0000 (09:04 +0000)] 
chg: doc: Set up version for BIND 9.21.1

Merge branch 'nicki/set-up-version-and-release-notes-for-bind-9.21.1' into 'main'

See merge request isc-projects/bind9!9355

22 months agoRemove release note draft file
Nicki Křížek [Mon, 19 Aug 2024 16:01:54 +0000 (18:01 +0200)] 
Remove release note draft file

Since we've started the new changelog & release notes process, the file
for drafting release notes for the version-to-be is no longer needed.

22 months agoUpdate BIND version to 9.21.1-dev
Nicki Křížek [Mon, 19 Aug 2024 15:59:00 +0000 (17:59 +0200)] 
Update BIND version to 9.21.1-dev

22 months agochg: ci: Allow rerun of unstable statschannel tests under TSAN
Nicki Křížek [Mon, 19 Aug 2024 14:10:10 +0000 (14:10 +0000)] 
chg: ci: Allow rerun of unstable statschannel tests under TSAN

The test_traffic_json and test_traffic_xml occasionally fail when
running under TSAN. This happens in CI and is most likely a result of
some instability that doesn't seem to be easily reproduced.

Closes #4598

Merge branch '4598-mark-statschannel-test-flaky' into 'main'

Closes #4598

See merge request isc-projects/bind9!9293

22 months agoAllow rerun of unstable statschannel tests under TSAN
Nicki Křížek [Mon, 12 Aug 2024 13:43:19 +0000 (15:43 +0200)] 
Allow rerun of unstable statschannel tests under TSAN

The test_traffic_json and test_traffic_xml occasionally fail when
running under TSAN. This happens in CI and is most likely a result of
some instability that doesn't seem to be easily reproduced.

22 months agochg: dev: Process also the ISC_R_CANCELED result code in rpz_rewrite()
Arаm Sаrgsyаn [Mon, 19 Aug 2024 11:39:29 +0000 (11:39 +0000)] 
chg: dev: Process also the ISC_R_CANCELED result code in rpz_rewrite()

Log canceled resolver queries (e.g. when shutting down a hung
fetch) in DEBUG3 level instead of DEBUG1 which is used for the
"unrecognized" result codes.

Closes #4797

Merge branch '4797-rpz_rewrite-add-ISC_R_CANCELED-processing' into 'main'

Closes #4797

See merge request isc-projects/bind9!9148

22 months agoProcess also the ISC_R_CANCELED result code in rpz_rewrite()
Aram Sargsyan [Thu, 11 Jul 2024 09:30:53 +0000 (09:30 +0000)] 
Process also the ISC_R_CANCELED result code in rpz_rewrite()

Log  canceled queries (e.g. when shutting down a hung fetch)
in DEBUG3 level instead of DEBUG1 which is used for the
"unrecognized" result codes.

22 months agofix: test: Add missing fclose() when applying updates failed (rpz/testlib)
Ondřej Surý [Mon, 19 Aug 2024 10:04:29 +0000 (10:04 +0000)] 
fix: test: Add missing fclose() when applying updates failed (rpz/testlib)

In rpz system tests, we could leak file if the applying the updates has
failed.  Add the missing fclose() before returning.

Merge branch 'ondrej/add-missing-flose-to-rpz-testlib' into 'main'

See merge request isc-projects/bind9!9317

22 months agoAdd missing fclose() when applying updates failed (rpz/testlib)
Ondřej Surý [Thu, 15 Aug 2024 07:28:26 +0000 (09:28 +0200)] 
Add missing fclose() when applying updates failed (rpz/testlib)

In rpz system tests, we could leak file if the applying the updates has
failed.  Add the missing fclose() before returning.

22 months agofix: dev: Check the result of dirfd() before calling unlinkat()
Ondřej Surý [Mon, 19 Aug 2024 09:57:48 +0000 (09:57 +0000)] 
fix: dev: Check the result of dirfd() before calling unlinkat()

Instead of directly using the result of dirfd() in the unlinkat() call,
check whether the returned file descriptor is actually valid.  That
doesn't really change the logic as the unlinkat() would fail with
invalid descriptor anyway, but this is cleaner and will report the right
error returned directly by dirfd() instead of EBADF from unlinkat().

Closes #4853

Merge branch '4853-check-result-of-dirfd-in-isc_log' into 'main'

Closes #4853

See merge request isc-projects/bind9!9316

22 months agoCheck the result of dirfd() before calling unlinkat()
Ondřej Surý [Thu, 15 Aug 2024 07:23:31 +0000 (09:23 +0200)] 
Check the result of dirfd() before calling unlinkat()

Instead of directly using the result of dirfd() in the unlinkat() call,
check whether the returned file descriptor is actually valid.  That
doesn't really change the logic as the unlinkat() would fail with
invalid descriptor anyway, but this is cleaner and will report the right
error returned directly by dirfd() instead of EBADF from unlinkat().

22 months agochg: dev: Remove code to read and parse /proc/net/if_inet6 on Linux
Ondřej Surý [Mon, 19 Aug 2024 09:43:03 +0000 (09:43 +0000)] 
chg: dev: Remove code to read and parse /proc/net/if_inet6 on Linux

The getifaddr() works fine for years, so we don't have to
keep the callback to parse /proc/net/if_inet6 anymore.

Closes #4852

Merge branch '4852-handle-errors-from-rewind' into 'main'

Closes #4852

See merge request isc-projects/bind9!9315

22 months agoRemove code to read and parse /proc/net/if_inet6 on Linux
Ondřej Surý [Thu, 15 Aug 2024 08:50:22 +0000 (10:50 +0200)] 
Remove code to read and parse /proc/net/if_inet6 on Linux

The getifaddr() works fine for years, so we don't have to
keep the callback to parse /proc/net/if_inet6 anymore.

22 months agoIgnore errno returned from rewind() in the interface iterator
Ondřej Surý [Thu, 15 Aug 2024 07:12:18 +0000 (09:12 +0200)] 
Ignore errno returned from rewind() in the interface iterator

The clang-scan 19 has reported that we are ignoring errno after the call
to rewind().  As we don't really care about the result, just silence the
error, the whole code will be removed in the development version anyway
as it is not needed.

22 months agofix: dev: Change the NS_PER_SEC (and friends) from enum to static const
Ondřej Surý [Mon, 19 Aug 2024 09:09:09 +0000 (09:09 +0000)] 
fix: dev: Change the NS_PER_SEC (and friends) from enum to static const

New version of clang (19) has introduced a stricter checks when mixing
integer (and float types) with enums.  In this case, we used enum {}
as C17 doesn't have constexpr yet.  Change the time conversion constants
to be static const unsigned int instead of enum values.

Closes #4845

Merge branch '4845-change-NS_PER_SEC-type-from-enum-to-integer' into 'main'

Closes #4845

See merge request isc-projects/bind9!9313

22 months agoUse constexpr for NS_PER_SEC and friends constants
Ondřej Surý [Wed, 14 Aug 2024 14:10:18 +0000 (16:10 +0200)] 
Use constexpr for NS_PER_SEC and friends constants

The contexpr introduced in C23 standard makes perfect sense to be used
instead of preprocessor macros - the symbols are kept, etc.  Define
ISC_CONSTEXPR to be `constexpr` for C23 and `static const` for the older
C standards.  Use the newly introduced macro for the NS_PER_SEC and
friends time constants.

22 months agoChange the NS_PER_SEC (and friends) from enum to static const
Ondřej Surý [Wed, 14 Aug 2024 14:10:18 +0000 (16:10 +0200)] 
Change the NS_PER_SEC (and friends) from enum to static const

New version of clang (19) has introduced a stricter checks when mixing
integer (and float types) with enums.  In this case, we used enum {}
as C17 doesn't have constexpr yet.  Change the time conversion constants
to be static const unsigned int instead of enum values.

22 months agochg: test: Retire Debian 11 "bullseye"
Ondřej Surý [Fri, 16 Aug 2024 06:48:38 +0000 (06:48 +0000)] 
chg: test: Retire Debian 11 "bullseye"

A follow-up to isc-projects/bind9!9324.

Merge branch 'mnowak/retire-debian-11-bullseye' into 'main'

See merge request isc-projects/bind9!9330

22 months agoRetire Debian 11 "bullseye"
Michal Nowak [Fri, 16 Aug 2024 06:31:51 +0000 (08:31 +0200)] 
Retire Debian 11 "bullseye"

A follow-up to isc-projects/bind9!9324.

22 months agochg: test: For TSAN builds, use libraries from /opt/tsan
Ondřej Surý [Thu, 15 Aug 2024 21:03:26 +0000 (21:03 +0000)] 
chg: test: For TSAN builds, use libraries from /opt/tsan

The new TSAN images, the TSAN-enabled images install libraries to
opt/tsan, synchronize the configure options and CFLAGS between gcc:tsan
and clang:tsan images and set the PKG_CONFIG_PATH to /opt/tsan/lib.

Additionally, drop Debian bullseye that's EOL now.

Merge branch 'ondrej/use-staging-tsan-images' into 'main'

See merge request isc-projects/bind9!9324

22 months agoRemove Debian bullseye jobs
Ondřej Surý [Thu, 15 Aug 2024 18:21:46 +0000 (20:21 +0200)] 
Remove Debian bullseye jobs

The Debian bullseye has reached end-of-life, remove it from the CI.

22 months agoFor TSAN builds, use libraries from /opt/tsan
Ondřej Surý [Thu, 15 Aug 2024 17:54:58 +0000 (19:54 +0200)] 
For TSAN builds, use libraries from /opt/tsan

The new TSAN images, the TSAN-enabled images install libraries to
/opt/tsan, synchronize the configure options and CFLAGS between gcc:tsan
and clang:tsan images and set the PKG_CONFIG_PATH to /opt/tsan/lib.

22 months agofix: dev: Check if logconfig is NULL before using it in isc_log_doit()
Arаm Sаrgsyаn [Thu, 15 Aug 2024 12:55:28 +0000 (12:55 +0000)] 
fix: dev: Check if logconfig is NULL before using it in isc_log_doit()

Check if 'lctx->logconfig' is NULL before using it in isc_log_doit(),
because it's possible that isc_log_destroy() was already called, e.g.
when a 'call_rcu' function wants to log a message during shutdown.

Closes #4842

Merge branch '4842-shutdown-crash-in-isc_log_doit' into 'main'

Closes #4842

See merge request isc-projects/bind9!9297

22 months agoCheck if logconfig is NULL before using it in isc_log_doit()
Aram Sargsyan [Tue, 13 Aug 2024 09:45:26 +0000 (09:45 +0000)] 
Check if logconfig is NULL before using it in isc_log_doit()

Check if 'lctx->logconfig' is NULL before using it in isc_log_doit(),
because it's possible that isc_log_destroy() was already called, e.g.
when a 'call_rcu' function wants to log a message during shutdown.

22 months agofix: dev: Add -Wno-psabi to CFLAGS for x86 (32-bit) builds
Arаm Sаrgsyаn [Thu, 15 Aug 2024 12:51:03 +0000 (12:51 +0000)] 
fix: dev: Add -Wno-psabi to CFLAGS for x86 (32-bit) builds

GCC 11.1+ emits a note during compilation when there are 64-bit
atomic fields in a structure, because it fixed a compiler bug
by changing the alignment of such fields, which caused ABI change.

Add -Wno-psabi to CFLAGS for such builds in order to silence the
warning. That shouldn't be a problem since we don't expose our
structures to the outside.

Closes #4841

Merge branch '4841-alignment-of-_Atomic-long-long-unsigned-int' into 'main'

Closes #4841

See merge request isc-projects/bind9!9319

22 months agoAdd -Wno-psabi to CFLAGS for x86 (32-bit) builds
Aram Sargsyan [Thu, 15 Aug 2024 10:28:40 +0000 (10:28 +0000)] 
Add -Wno-psabi to CFLAGS for x86 (32-bit) builds

GCC 11.1+ emits a note during compilation when there are 64-bit
atomic fields in a structure, because it fixed a compiler bug
by changing the alignment of such fields, which caused ABI change.

Add -Wno-psabi to CFLAGS for such builds in order to silence the
warning. That shouldn't be a problem since we don't expose our
structures to the outside.

22 months agorem: do not include config.h
Aydın Mercan [Thu, 15 Aug 2024 12:12:15 +0000 (12:12 +0000)] 
rem: do not include config.h

The build system ensures it is always included for every source file.

Merge branch 'aydin/no-include-config-h' into 'main'

See merge request isc-projects/bind9!9320

22 months agodo not include config.h
Aydın Mercan [Thu, 15 Aug 2024 10:51:11 +0000 (13:51 +0300)] 
do not include config.h

The build system ensures it is always included for every source file.

22 months agochg: test: Reduce the size of hashmap_nodes.h file
Ondřej Surý [Thu, 15 Aug 2024 11:56:49 +0000 (11:56 +0000)] 
chg: test: Reduce the size of hashmap_nodes.h file

Instead of keeping the whole array of test_node_t objects, just keep the
hashvalues and generated the rest of the test_node_t on the fly.  The
test still works this way and the file size has been reduced from 2M to
90k.

Closes #4851

Merge branch '4851-generate-problematic-isc_hashmap-test-data' into 'main'

Closes #4851

See merge request isc-projects/bind9!9318

22 months agoReduce the size of hashmap_nodes.h file
Ondřej Surý [Thu, 15 Aug 2024 08:02:14 +0000 (10:02 +0200)] 
Reduce the size of hashmap_nodes.h file

Instead of keeping the whole array of test_node_t objects, just keep the
hashvalues and generated the rest of the test_node_t on the fly.  The
test still works this way and the file size has been reduced from 2M to
90k.

22 months agofix: Change the placement of ctor/dtor attributes in the dst_api
Ondřej Surý [Wed, 14 Aug 2024 16:21:08 +0000 (16:21 +0000)] 
fix: Change the placement of ctor/dtor attributes in the dst_api

Change the placement of the attributes to match the existing usage in
other places (after the declaration).

Merge branch 'ondrej/ISC_CONSTRUCTOR-style' into 'main'

See merge request isc-projects/bind9!9291

22 months agoChange the placement of ctor/dtor attributes in the dst_api
Ondřej Surý [Mon, 12 Aug 2024 09:55:13 +0000 (11:55 +0200)] 
Change the placement of ctor/dtor attributes in the dst_api

Change the placement of the attributes to match the existing usage in
other places (after the declaration).

22 months agochg: ci: Check that generated changelog entry doesn't break docs build
Nicki Křížek [Wed, 14 Aug 2024 15:25:26 +0000 (15:25 +0000)] 
chg: ci: Check that generated changelog entry doesn't break docs build

Since changelog entries are now generated from MR title&description,
they aren't sanity checked during a regular docs build. If these contain
special sequences that will be interpreted by sphinx, it might result in
breakage that would have to be amended manually.

Add a CI check to test a doc build with changelog after the MR is merged
to ensure that the docs can be built when generating changelog from
pristine git contents.

Related #4847

Merge branch 'nicki/add-changelog-entry-check' into 'main'

See merge request isc-projects/bind9!9294

22 months agoUse python3 in shebang lines for util scripts
Nicki Křížek [Tue, 13 Aug 2024 12:00:43 +0000 (14:00 +0200)] 
Use python3 in shebang lines for util scripts

Some distributions (notably, debian bookworm) have deprecated the
`python` interpreter in favor of `python3`. Since our scripts are
python3 anyway, use the proper numbered version in shebang to make
scripts easily executable.

22 months agoCheck that generated changelog entry doesn't break docs build
Nicki Křížek [Mon, 12 Aug 2024 12:51:31 +0000 (14:51 +0200)] 
Check that generated changelog entry doesn't break docs build

Since changelog entries are now generated from MR title&description,
they aren't sanity checked during a regular docs build. If these contain
special sequences that will be interpreted by sphinx, it might result in
breakage that would have to be amended manually.

Add a CI check to test a doc build with changelog after the MR is merged
to ensure that the docs can be built when generating changelog from
pristine git contents.

22 months agofix: dev: Fix the assertion failure in the isc_hashmap iterator
Ondřej Surý [Wed, 14 Aug 2024 15:19:11 +0000 (15:19 +0000)] 
fix: dev: Fix the assertion failure in the isc_hashmap iterator

When the round robin hashing reorders the map entries on deletion, we
were adjusting the iterator table size only when the reordering was
happening at the internal table boundary.  The iterator table size had
to be reduced by one to prevent seeing the entry that resized on
position [0] twice because it migrated to [iter->size - 1] position.

However, the same thing could happen when the same entry migrates a
second time from [iter->size - 1] to [iter->size - 2] position (and so
on) because the check that we are manipulating the entry just in the [0]
position was insufficient.  Instead of checking the position [pos == 0],
we now check that the [pos % iter->size == 0], thus ignoring all the
entries that might have moved back to the end of the internal table.

Closes #4838

Merge branch '4838-fix-assertion-failure-in-hashmap-deletion-iterator' into 'main'

Closes #4838

See merge request isc-projects/bind9!9292

22 months agoSkip already rehashed positions in the old hashmap table
Ondřej Surý [Mon, 12 Aug 2024 13:22:54 +0000 (15:22 +0200)] 
Skip already rehashed positions in the old hashmap table

When iterating through the old internal hashmap table, skip all the
nodes that have been already migrated to the new table.  We know that
all positions with index less than .hiter are NULL.

22 months agoFix the assertion failure in the isc_hashmap iterator
Ondřej Surý [Mon, 12 Aug 2024 13:17:00 +0000 (15:17 +0200)] 
Fix the assertion failure in the isc_hashmap iterator

When the round robin hashing reorders the map entries on deletion, we
were adjusting the iterator table size only when the reordering was
happening at the internal table boundary.  The iterator table size had
to be reduced by one to prevent seeing the entry that resized on
position [0] twice because it migrated to [iter->size - 1] position.

However, the same thing could happen when the same entry migrates a
second time from [iter->size - 1] to [iter->size - 2] position (and so
on) because the check that we are manipulating the entry just in the [0]
position was insufficient.  Instead of checking the position [pos == 0],
we now check that the [pos % iter->size == 0], thus ignoring all the
entries that might have moved back to the end of the internal table.

22 months agoAdd known-to-crash static hashmap iterator nodes array
Ondřej Surý [Mon, 12 Aug 2024 13:13:34 +0000 (15:13 +0200)] 
Add known-to-crash static hashmap iterator nodes array

Add second iterator test with a well-known configuration of the nodes
array that causes the last element of the array to migrate two times to
the previous node.

22 months agochg: doc: Fix ordering of gitchangelog replacement regexs
Nicki Křížek [Wed, 14 Aug 2024 15:06:08 +0000 (15:06 +0000)] 
chg: doc: Fix ordering of gitchangelog replacement regexs

Ensure the issue number in changelog isn't accidentally removed for backport MRs.

Merge branch 'nicki/fix-gitchangelog-replacement-regexs' into 'main'

See merge request isc-projects/bind9!9295

22 months agoFix ordering of gitchangelog replacement regexs
Nicki Křížek [Tue, 13 Aug 2024 08:33:02 +0000 (10:33 +0200)] 
Fix ordering of gitchangelog replacement regexs

Prior to this change, the issue number could be accidentally removed by
the `Backport of` text, depending on the order of the MR description
contents. Ensure all the removals for text in MR descriptions happen
first, and only then run the replacement regex for issue number, which
appends it to the end of the last non-empty line (which will no longer
be removed).

The only removals that happen after the replacement are guaranteed to
always happen after the end of MR description, since they're
auto-generated by gitlab when the merge commit is created, thus won't
affect the line with the issue number.

Also remove the needless isc-private/bind9 replacement. References
to private MRs are already removed by the very first regex.

22 months agofix: dev: Silence all warnings that stem from the default config
Ondřej Surý [Wed, 14 Aug 2024 12:52:01 +0000 (12:52 +0000)] 
fix: dev: Silence all warnings that stem from the default config

As we now setup the logging very early, parsing the default config would
always print warnings about experimental (and possibly deprecated)
options in the default config.  This would even mess with commands like
`named -V` and it is also wrong to warn users about using experimental
options in the default config, because they can't do anything about
this.  Add CFG_PCTX_NODEPRECATED and CFG_PCTX_NOEXPERIMENTAL options
that we can pass to cfg parser and silence the early warnings caused by
using experimental options in the default config.

Merge branch 'ondrej/silence-warnings-from-default-config' into 'main'

See merge request isc-projects/bind9!9304

22 months agoSilence all warnings that stem from the default config
Ondřej Surý [Wed, 14 Aug 2024 08:20:47 +0000 (10:20 +0200)] 
Silence all warnings that stem from the default config

As we now setup the logging very early, parsing the default config would
always print warnings about experimental (and possibly deprecated)
options in the default config.  This would even mess with commands like
`named -V` and it is also wrong to warn users about using experimental
options in the default config, because they can't do anything about
this.  Add CFG_PCTX_NODEPRECATED and CFG_PCTX_NOEXPERIMENTAL options
that we can pass to cfg parser and silence the early warnings caused by
using experimental options in the default config.

22 months agorem: dev: Remove outdated perllib integration
Ondřej Surý [Wed, 14 Aug 2024 12:49:56 +0000 (12:49 +0000)] 
rem: dev: Remove outdated perllib integration

The code in conftools/ directory hasn't been touched since 2000.
Nobody knows what it does and nobody even knows how to build it
or test it.  Just remove the whole directory.

Merge branch 'ondrej/remove-outdated-perllib-integration' into 'main'

See merge request isc-projects/bind9!9302

22 months agoRemove outdated perllib integration
Ondřej Surý [Tue, 13 Aug 2024 13:42:52 +0000 (15:42 +0200)] 
Remove outdated perllib integration

The code in conftools/ directory hasn't been touched since 2000.
Nobody knows what it does and nobody even knows how to build it
or test it.  Just remove the whole directory.

22 months agochg: usr: use deterministic ecdsa for openssl >= 3.2
Aydın Mercan [Wed, 14 Aug 2024 12:47:06 +0000 (12:47 +0000)] 
chg: usr: use deterministic ecdsa for openssl >= 3.2

OpenSSL has added support for deterministic ECDSA (RFC 6979) with
version 3.2.

Use it by default as it removes arguably its most fragile side of ECDSA.
The derandomization doesn't pose a risk for DNS usecases and is allowed by FIPS 186-5.

Closes https://gitlab.isc.org/isc-projects/bind9/-/issues/299

Merge branch '299-change-ecdsa-to-deterministic-usage-elliptic-curve-digital-signature-algorithm-rfc-6979' into 'main'

Closes #299

See merge request isc-projects/bind9!9128

22 months agouse deterministic ecdsa for openssl >= 3.2
Aydın Mercan [Mon, 8 Jul 2024 11:53:26 +0000 (14:53 +0300)] 
use deterministic ecdsa for openssl >= 3.2

OpenSSL has added support for deterministic ECDSA (RFC 6979) with
version 3.2.

Use it by default as derandomization doesn't pose a risk for DNS
usecases and is allowed by FIPS 186-5.

22 months agoUpdate BIND version for release v9.21.0
Petr Špaček [Mon, 12 Aug 2024 11:27:05 +0000 (13:27 +0200)] 
Update BIND version for release

22 months agoAdd changelog entry for last-minute regression fix
Petr Špaček [Tue, 13 Aug 2024 14:26:55 +0000 (16:26 +0200)] 
Add changelog entry for last-minute regression fix

22 months agoPrepare documentation for BIND 9.21.0
Petr Špaček [Mon, 12 Aug 2024 11:24:22 +0000 (11:24 +0000)] 
Prepare documentation for BIND 9.21.0

Merge branch 'michal/prepare-documentation-for-bind-9.21.0' into 'v9.21.0-release'

See merge request isc-private/bind9!728

22 months agofix: usr: reconfigure catz member zones during named reconfiguration
Michał Kępień [Fri, 9 Aug 2024 06:48:37 +0000 (06:48 +0000)] 
fix: usr: reconfigure catz member zones during named reconfiguration

During a reconfiguration named wasn't reconfiguring catalog zones'
member zones. This has been fixed.

Closes isc-projects/bind9#4733

Merge branch '4733-fix-catz-member-zones-reconfigure' into 'v9.21.0-release'

See merge request isc-private/bind9!695

22 months agoTweak and reword release notes some more
Petr Špaček [Mon, 12 Aug 2024 08:08:42 +0000 (08:08 +0000)] 
Tweak and reword release notes some more

Co-authored-by: Greg Choules <greg@isc.org>
22 months agoNon empty 'catalog-zones' implies that 'allow-new-zones' is true
Aram Sargsyan [Tue, 9 Jul 2024 10:41:19 +0000 (10:41 +0000)] 
Non empty 'catalog-zones' implies that 'allow-new-zones' is true

This condition in catalog zone processing functions is checked only
for sanity, so there is no meaning for a log message that normally
shouldn't be ever logged.

22 months agoPrepare documentation for BIND 9.21.0
Michał Kępień [Fri, 9 Aug 2024 07:12:18 +0000 (09:12 +0200)] 
Prepare documentation for BIND 9.21.0

22 months agoReconfigure catz member zones during named reconfiguration
Aram Sargsyan [Fri, 24 May 2024 13:18:15 +0000 (13:18 +0000)] 
Reconfigure catz member zones during named reconfiguration

During a reconfiguration named doesn't reconfigure catalog zones
member zones. Implement the necessary code to reconfigure catz
member zones.

22 months agoReorder release notes
Michał Kępień [Fri, 9 Aug 2024 07:12:18 +0000 (09:12 +0200)] 
Reorder release notes

22 months agoTest that 'rndc reconfig' reconfigures catz member zones
Aram Sargsyan [Fri, 24 May 2024 13:16:16 +0000 (13:16 +0000)] 
Test that 'rndc reconfig' reconfigures catz member zones

Catalog zone member zones should be reconfigured as all the other
zones during a reconfiguration. Test it by checking whether the newly
added allow-query setting affects a member zone.

22 months agoFix "make doc" for the changelog
Michał Kępień [Fri, 9 Aug 2024 07:12:18 +0000 (09:12 +0200)] 
Fix "make doc" for the changelog

22 months agoTweak and reword release notes
Michał Kępień [Fri, 9 Aug 2024 07:12:18 +0000 (09:12 +0200)] 
Tweak and reword release notes

22 months agoGenerate release documentation
Michał Kępień [Fri, 9 Aug 2024 07:12:18 +0000 (09:12 +0200)] 
Generate release documentation

22 months agofix: dev: Don't skip the counting if fcount_incr() is called with force==true (v2)
Ondřej Surý [Tue, 13 Aug 2024 13:53:13 +0000 (13:53 +0000)] 
fix: dev: Don't skip the counting if fcount_incr() is called with force==true (v2)

The fcount_incr() was not increasing counter->count when force was set
to true, but fcount_decr() would try to decrease the counter leading to
underflow and assertion failure.  Swap the order of the arguments in the
condition, so the !force is evaluated after incrementing the .count.

Closes #4846

Merge branch '4786-forced-fcount_incr-should-still-increment-count-and-allowed-fix' into 'main'

Closes #4846

See merge request isc-projects/bind9!9298

22 months agoAdd fetches-per-zone 40 to qmin/ns5 configuration
Ondřej Surý [Tue, 13 Aug 2024 12:56:06 +0000 (14:56 +0200)] 
Add fetches-per-zone 40 to qmin/ns5 configuration

The simple change causes assertion failure fixed in the previous commit.

22 months agoDon't skip the counting if fcount_incr() is called with force==true (v2)
Ondřej Surý [Tue, 13 Aug 2024 10:48:23 +0000 (12:48 +0200)] 
Don't skip the counting if fcount_incr() is called with force==true (v2)

The fcount_incr() was not increasing counter->count when force was set
to true, but fcount_decr() would try to decrease the counter leading to
underflow and assertion failure.  Swap the order of the arguments in the
condition, so the !force is evaluated after incrementing the .count.

22 months agochg: Make every changelog entry a separate code block
Michal Nowak [Thu, 8 Aug 2024 14:25:12 +0000 (14:25 +0000)] 
chg: Make every changelog entry a separate code block

LaTeX in CI and on ReadTheDocs [fails][1] to render a PDF version of ARM if
the Changelog section is included. The running theory is that the
verbatim section of more than twenty thousand lines is too big to meet
LaTeX self-imposed constraints, and it fails with:

    ! TeX capacity exceeded, sorry [main memory size=5000000].

Or it just hangs if extra_mem_bot=30000000 is set in
/etc/texmf/texmf.d/01main_memory_bump.cnf:

    ! Dimension too large.
    \fb@put@frame ...p \ifdim \dimen@ >\ht \@tempboxa

    \fb@putboxa #1\fb@afterfra...
    l.56913 \end{sphinxVerbatim}

Make each BIND 9 release a separate code block to work around the issue.
Further split up the sections for some exceptionally large releases, for
the same reason.

[1]: https://gitlab.isc.org/isc-projects/bind9/-/jobs/4584011

Merge branch 'mnowak/fix-arm-changelog-section' into 'main'

See merge request isc-projects/bind9!9266

22 months agoSplit up changelog into per-release code blocks
Michal Nowak [Wed, 7 Aug 2024 10:39:23 +0000 (12:39 +0200)] 
Split up changelog into per-release code blocks

LaTeX in CI and on ReadTheDocs fails to render a PDF version of ARM if
the Changelog section is included. The running theory is that the
verbatim section of more than twenty thousand lines is too big to meet
LaTeX self-imposed constraints, and it fails with:

    ! TeX capacity exceeded, sorry [main memory size=5000000].

Or it just hangs if extra_mem_bot=30000000 is set in
/etc/texmf/texmf.d/01main_memory_bump.cnf:

    ! Dimension too large.
    \fb@put@frame ...p \ifdim \dimen@ >\ht \@tempboxa

    \fb@putboxa #1\fb@afterfra...
    l.56913 \end{sphinxVerbatim}

Make each BIND 9 release a separate code block to work around the issue.
Further split up the sections for some exceptionally large releases, for
the same reason.

22 months agofix: dev: Move the dst__openssl_toresult to isc_tls unit
Michał Kępień [Thu, 8 Aug 2024 11:01:21 +0000 (11:01 +0000)] 
fix: dev: Move the dst__openssl_toresult to isc_tls unit

Since the enable_fips_mode() now resides inside the isc_tls unit, BIND 9
would fail to compile when FIPS mode was enabled as the DST subsystem
logging functions were missing.

Move the crypto library logging functions from the openssl_link unit to
isc_tls unit and enhance it, so it can now be used from both places
keeping the old dst__openssl_toresult* macros alive.

Merge branch 'ondrej/move-openssl-logging-to-isc_tls-unit' into 'main'

See merge request isc-projects/bind9!9286

22 months agoMove the dst__openssl_toresult to isc_tls unit
Ondřej Surý [Thu, 8 Aug 2024 08:59:49 +0000 (10:59 +0200)] 
Move the dst__openssl_toresult to isc_tls unit

Since the enable_fips_mode() now resides inside the isc_tls unit, BIND 9
would fail to compile when FIPS mode was enabled as the DST subsystem
logging functions were missing.

Move the crypto library logging functions from the openssl_link unit to
isc_tls unit and enhance it, so it can now be used from both places
keeping the old dst__openssl_toresult* macros alive.

22 months agonew: usr: Tighten 'max-recursion-queries' and add 'max-query-restarts' option
Evan Hunt [Wed, 7 Aug 2024 21:12:07 +0000 (21:12 +0000)] 
new: usr: Tighten 'max-recursion-queries' and add 'max-query-restarts' option

There were cases in resolver.c when the `max-recursion-queries` quota was ineffective. It was possible to craft zones that would cause a resolver to waste resources by sending excessive queries while attempting to resolve a name. This has been addressed by correcting errors in the implementation of `max-recursion-queries`, and by reducing the default value from 100 to 32.

In addition, a new `max-query-restarts` option has been added which limits the number of times a recursive server will follow CNAME or DNAME records before terminating resolution. This was previously a hard-coded limit of 16, and now defaults to 11.

Closes #4741

Merge branch '4741-reclimit-restarts' into 'main'

Closes #4741

See merge request isc-projects/bind9!9281

22 months agoadd +restarts and +maxqueries options to delv
Evan Hunt [Wed, 26 Jun 2024 01:48:18 +0000 (18:48 -0700)] 
add +restarts and +maxqueries options to delv

max-query-restarts and max-recursion-queries values can now be set
on the command line in delv for testing purposes.

22 months agoimplement 'max-query-restarts'
Evan Hunt [Wed, 26 Jun 2024 06:49:00 +0000 (23:49 -0700)] 
implement 'max-query-restarts'

implement, document, and test the 'max-query-restarts' option
which specifies the query restart limit - the number of times
we can follow CNAMEs before terminating resolution.

22 months agoreduce the max-recursion-queries default to 32
Evan Hunt [Tue, 25 Jun 2024 21:39:58 +0000 (14:39 -0700)] 
reduce the max-recursion-queries default to 32

the number of iterative queries that can be sent to resolve a
name now defaults to 32 rather than 100.

22 months agomake "max_restarts" a configurable value
Evan Hunt [Tue, 25 Jun 2024 21:30:20 +0000 (14:30 -0700)] 
make "max_restarts" a configurable value

MAX_RESTARTS is no longer hard-coded; ns_server_setmaxrestarts()
and dns_client_setmaxrestarts() can now be used to modify the
max-restarts value at runtime. in both cases, the default is 11.

22 months agoreduce MAX_RESTARTS to 11
Evan Hunt [Tue, 25 Jun 2024 19:28:23 +0000 (12:28 -0700)] 
reduce MAX_RESTARTS to 11

the number of steps that can be followed in a CNAME chain
before terminating the lookup has been reduced from 16 to 11.
(this is a hard-coded value, but will be made configurable later.)

22 months agoadd debug logging when creating or attaching to a query counter
Evan Hunt [Tue, 25 Jun 2024 18:02:49 +0000 (11:02 -0700)] 
add debug logging when creating or attaching to a query counter

fctx_create() now logs at debug level 9 when the fctx attaches
to an existing counter or creates a new one.

22 months agoapply max-recursion-queries quota to validator queries
Evan Hunt [Wed, 22 May 2024 22:17:47 +0000 (15:17 -0700)] 
apply max-recursion-queries quota to validator queries

previously, validator queries for DNSKEY and DS records were
not counted toward the quota for max-recursion-queries; they
are now.

22 months agoattach query counter to NS fetches
Evan Hunt [Wed, 22 May 2024 20:02:16 +0000 (13:02 -0700)] 
attach query counter to NS fetches

there were cases in resolver.c when queries for NS records were
started without passing a pointer to the parent fetch's query counter;
as a result, the max-recursion-queries quota for those queries started
counting from zero, instead of sharing the limit for the parent fetch,
making the quota ineffective in some cases.

22 months agochg: dev: use only c23 or c11 noreturn specifiers
Aydın Mercan [Wed, 7 Aug 2024 15:42:57 +0000 (15:42 +0000)] 
chg: dev: use only c23 or c11 noreturn specifiers

Use `[[noreturn]]` when compiling with C23 or greater.

The attribute macro name has been capitalized as `NORETURN` as defining it as `noreturn` breaks external headers.
`#define noreturn __attribute__((noreturn))` wasn't used as C11's `stdnoreturn.h`/`_Noreturn` is required to build BIND9 in the first place.

Merge branch 'aydin/noreturn-c23' into 'main'

See merge request isc-projects/bind9!9149

22 months agouse only c23 or c11 noreturn specifiers
Aydın Mercan [Thu, 11 Jul 2024 13:15:40 +0000 (16:15 +0300)] 
use only c23 or c11 noreturn specifiers

Since we require C11 or greater, we can depend on using either _Noreturn
or [[noreturn]].

22 months agochg: dev: Initialize the DST subsystem implicitly
Ondřej Surý [Wed, 7 Aug 2024 15:05:13 +0000 (15:05 +0000)] 
chg: dev: Initialize the DST subsystem implicitly

Instead of calling dst_lib_init() and dst_lib_destroy() explicitly by
all the programs, create a separate memory context for the DST subsystem
and use the library constructor and destructor to initialize the DST
internals.

Merge branch 'ondrej/move-dst_lib_init-and-destroy-to-lib-ctor-dtor' into 'main'

See merge request isc-projects/bind9!9254

22 months agoInitialize the DST subsystem implicitly
Ondřej Surý [Mon, 5 Aug 2024 10:14:26 +0000 (12:14 +0200)] 
Initialize the DST subsystem implicitly

Instead of calling dst_lib_init() and dst_lib_destroy() explicitly by
all the programs, create a separate memory context for the DST subsystem
and use the library constructor and destructor to initialize the DST
internals.

22 months agochg: test: Use new images with TSAN-enabled libraries
Ondřej Surý [Wed, 7 Aug 2024 14:28:13 +0000 (14:28 +0000)] 
chg: test: Use new images with TSAN-enabled libraries

The new Fedora 40 TSAN images use libuv, urcu and OpenSSL libraries compiled with ThreadSanitizer.  This (in theory) should enable better detection of memory races in those (most important) libraries.

Merge branch 'ondrej/test-new-tsan-images' into 'main'

See merge request isc-projects/bind9!9264

22 months agoAdd configure for libraries in /usr/local for the gcc:tsan job
Ondřej Surý [Tue, 6 Aug 2024 14:01:54 +0000 (16:01 +0200)] 
Add configure for libraries in /usr/local for the gcc:tsan job

The TSAN-enabled libraries are installed to /usr/local, pass the
PKG_CONFIG_PATH and few other options to CFLAGS to the configure
arguments.

22 months agofix: dev: Disassociate the SSL object from the cached SSL_SESSION
Ondřej Surý [Wed, 7 Aug 2024 14:26:22 +0000 (14:26 +0000)] 
fix: dev: Disassociate the SSL object from the cached SSL_SESSION

When the SSL object was destroyed, it would invalidate all SSL_SESSION
objects including the cached, but not yet used, TLS session objects.

Properly disassociate the SSL object from the SSL_SESSION before we
store it in the TLS session cache, so we can later destroy it without
invalidating the cached TLS sessions.

Closes #4834

Merge branch '4834-detach-SSL-from-cached-SSL_SESSION' into 'main'

Closes #4834

See merge request isc-projects/bind9!9271

22 months agoDisassociate the SSL object from the cached SSL_SESSION
Ondřej Surý [Wed, 7 Aug 2024 12:58:02 +0000 (14:58 +0200)] 
Disassociate the SSL object from the cached SSL_SESSION

When the SSL object was destroyed, it would invalidate all SSL_SESSION
objects including the cached, but not yet used, TLS session objects.

Properly disassociate the SSL object from the SSL_SESSION before we
store it in the TLS session cache, so we can later destroy it without
invalidating the cached TLS sessions.

Co-authored-by: Ondřej Surý <ondrej@isc.org>
Co-authored-by: Artem Boldariev <artem@isc.org>
Co-authored-by: Aram Sargsyan <aram@isc.org>
22 months agofix: dev: Attach/detach to the listening child socket when accepting TLS
Ondřej Surý [Wed, 7 Aug 2024 14:17:50 +0000 (14:17 +0000)] 
fix: dev: Attach/detach to the listening child socket when accepting TLS

When TLS connection (TLSstream) connection was accepted, the children
listening socket was not attached to sock->server and thus it could have
been freed before all the accepted connections were actually closed.

In turn, this would cause us to call isc_tls_free() too soon - causing
cascade errors in pending SSL_read_ex() in the accepted connections.

Properly attach and detach the children listening socket when accepting
and closing the server connections.

Closes #4833

Merge branch '4833-tlssock-needs-to-attach-to-child-tlslistener' into 'main'

Closes #4833

See merge request isc-projects/bind9!9270

22 months agoAttach/detach to the listening child socket when accepting TLS
Ondřej Surý [Wed, 7 Aug 2024 06:43:12 +0000 (08:43 +0200)] 
Attach/detach to the listening child socket when accepting TLS

When TLS connection (TLSstream) connection was accepted, the children
listening socket was not attached to sock->server and thus it could have
been freed before all the accepted connections were actually closed.

In turn, this would cause us to call isc_tls_free() too soon - causing
cascade errors in pending SSL_read_ex() in the accepted connections.

Properly attach and detach the children listening socket when accepting
and closing the server connections.

22 months agofix: pkg: Fix --enable-tracing build on systems without dtrace
Petr Špaček [Wed, 7 Aug 2024 13:53:29 +0000 (13:53 +0000)] 
fix: pkg: Fix --enable-tracing build on systems without dtrace

Missing file util/dtrace.sh prevented builds on system without dtrace utility.
This has been corrected.

Fixes: #4835
Merge branch 'pspacek/gitattribute-fixes' into 'main'

Closes #4835

See merge request isc-projects/bind9!9262

22 months agoInclude util/dtrace.sh in tarballs
Petr Špaček [Tue, 6 Aug 2024 09:42:34 +0000 (11:42 +0200)] 
Include util/dtrace.sh in tarballs

22 months agoRemove obsolete reference to mksymtbl.pl
Petr Špaček [Tue, 6 Aug 2024 09:41:03 +0000 (11:41 +0200)] 
Remove obsolete reference to mksymtbl.pl

This was a leftover from commit c463808992abd450d5469befe9f7e67b4732cb1b

22 months agofix: dev: Make hypothesis optional for system tests
Petr Špaček [Wed, 7 Aug 2024 10:55:21 +0000 (10:55 +0000)] 
fix: dev: Make hypothesis optional for system tests

Ensure that system tests can be executed without Python hypothesis
package.

Closes #4831

Merge branch '4831-isctest-make-hypothesis-optional' into 'main'

Closes #4831

See merge request isc-projects/bind9!9265

22 months agoMake hypothesis optional for system tests
Nicki Křížek [Tue, 6 Aug 2024 15:14:21 +0000 (17:14 +0200)] 
Make hypothesis optional for system tests

Ensure that system tests can be executed without Python hypothesis
package.

22 months agofix: usr: Dig now reports missing query section for opcode QUERY
Mark Andrews [Wed, 7 Aug 2024 02:20:22 +0000 (02:20 +0000)] 
fix: usr: Dig now reports missing query section for opcode QUERY

Query responses should contain the question section with some exceptions.  Dig was not reporting this.

Closes #4808

Merge branch '4808-have-dig-report-missing-question-section-in-axfr-response' into 'main'

Closes #4808

See merge request isc-projects/bind9!9233

22 months agoDig now reports a missing question section
Mark Andrews [Mon, 5 Aug 2024 05:09:27 +0000 (15:09 +1000)] 
Dig now reports a missing question section

The question section should be present in the first AXFR/IXFR
response and in other QUERY responses unless no question was sent.
Issue a warning if the question section is not present.

22 months agochg: usr: Remove OpenSSL 1.x Engine support
Ondřej Surý [Tue, 6 Aug 2024 14:04:56 +0000 (14:04 +0000)] 
chg: usr: Remove OpenSSL 1.x Engine support

The OpenSSL 1.x Engines support has been deprecated in the OpenSSL 3.x
and is going to be removed from the upstream OpenSSL.  Remove the OpenSSL
Engine support from BIND 9 in favor of OpenSSL 3.x Providers.

Closes #4828

Merge branch '4828-remove-OpenSSL-engine-support' into 'main'

Closes #4828

See merge request isc-projects/bind9!9252

22 months agoAlways use OpenSSL_version() to print OpenSSL version
Ondřej Surý [Tue, 6 Aug 2024 09:22:05 +0000 (11:22 +0200)] 
Always use OpenSSL_version() to print OpenSSL version

OpenSSL_version() first appeared in OpenSSL 1.1.0 and have been
available since LibreSSL 2.7.1 and OpenBSD 6.3, thus we can remove the
compatibility shims with older versions that are not supported anymore.

22 months agoRemove checks for OPENSSL_API_LEVEL define
Ondřej Surý [Tue, 6 Aug 2024 09:20:23 +0000 (11:20 +0200)] 
Remove checks for OPENSSL_API_LEVEL define

Since the support for OpenSSL Engines has been removed, we can now also
remove the checks for OPENSSL_API_LEVEL; The OpenSSL 3.x APIs will be
used when compiling with OpenSSL 3.x, and OpenSSL 1.1.xx APIs will be
used only when OpenSSL 1.1.x is used.

22 months agoRemove OpenSSL Engine support
Ondřej Surý [Mon, 5 Aug 2024 09:40:42 +0000 (11:40 +0200)] 
Remove OpenSSL Engine support

The OpenSSL 1.x Engines support has been deprecated in the OpenSSL 3.x
and is going to be removed.  Remove the OpenSSL Engine support in favor
of OpenSSL Providers.

22 months agofix: Move matching isc_mem_destroy() outside of ifdef
Ondřej Surý [Mon, 5 Aug 2024 16:54:02 +0000 (16:54 +0000)] 
fix: Move matching isc_mem_destroy() outside of ifdef

The isc_mem_create() in printversion() was created outside of an #ifdef
HAVE_GEOIP, but destroyed inside the #ifdef; move it to the outside of
the #ifdef where it belongs.

This is really a nit as we immediately exit() after printing the
versions, but I found it and it would bug me for the rest of my life.

Merge branch 'ondrej/fix-missing-isc_mem_destroy-in-printversion' into 'main'

See merge request isc-projects/bind9!9255

22 months agoMove matching isc_mem_destroy() outside of ifdef alessio/regression/2ebcafd8c2
Ondřej Surý [Mon, 5 Aug 2024 13:55:53 +0000 (15:55 +0200)] 
Move matching isc_mem_destroy() outside of ifdef

The isc_mem_create() in printversion() was created outside of an #ifdef
HAVE_GEOIP, but destroyed inside the #ifdef; move it to the outside of
the #ifdef where it belongs.

This is really a nit as we immediately exit() after printing the
versions, but I found it and it would bug me for the rest of my life.