2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 01:59:26 +00:00

43358 Commits

Author SHA1 Message Date
Michał Kępień
205da98524
Update BIND version for release v9.21.10 2025-07-04 11:34:56 +02:00
Michał Kępień
aba823170b new: doc: Prepare documentation for BIND 9.21.10
Merge branch 'michal/prepare-documentation-for-bind-9.21.10' into 'v9.21.10-release'

See merge request isc-private/bind9!816
2025-07-04 11:33:25 +02:00
Michał Kępień
405938597f
Add release note for GL !8989 2025-07-03 22:54:36 +02:00
Michał Kępień
9cdaaa6511
Tweak and reword release notes 2025-07-03 22:54:36 +02:00
Michał Kępień
beb5214586
Prepare release notes for BIND 9.21.10 2025-07-03 22:54:36 +02:00
Michał Kępień
94a463138e
Generate changelog for BIND 9.21.10 2025-07-03 22:54:36 +02:00
Andoni Duarte
7fafa0e48f [CVE-2025-40777] sec: usr: Fix a possible assertion failure when using the 'stale-answer-client-timeout 0' option
In specific circumstances the :iscman:`named` resolver process could
terminate unexpectedly when stale answers were enabled and the
``stale-answer-client-timeout 0`` configuration option was used.
This has been fixed.

See isc-projects/bind9#5372

Merge branch '5372-security-serve-stale-crash-on-insist-unreachable' into 'v9.21.10-release'

See merge request isc-private/bind9!808
2025-07-03 10:52:28 +00:00
Aram Sargsyan
3d8bd8bbf1 Reset DNS_DBFIND_STALETIMEOUT in query_lookup()
If ns__query_start() is called because of a chained query (e.g.
after encountering a CNAME), a previously set DNS_DBFIND_STALETIMEOUT
flag on the query's 'dboptions' field can cause an assertion
failure if the new query's 'stalefirst' value is not true (e.g. if the
target qname is an authoritative zone for the server). Reset the
DNS_DBFIND_STALETIMEOUT flag in the query_lookup() function before
evaluating the 'stalefirst' value, and make sure to assign a fresh
value to the `stalefirst' flag instead of conditionally assigning it
only if the value is 'true'.
2025-07-03 11:03:34 +02:00
Nicki Křížek
3719cf53c0 chg: ci: Allow flaky unit tests to be re-run in CI
Mark unstable unit tests with `flaky` test suite. Execute the stable
separately in CI. Allow the flaky ones to be re-executed once in case
they fail.

Closes #5385

Merge branch '5385-rerun-flaky-unit-tests' into 'main'

See merge request isc-projects/bind9!10665
2025-07-02 13:49:00 +02:00
Nicki Křížek
50a1d49e7d Allow flaky unit tests to be re-run in CI
Mark instable unit tests with `flaky` test suite. Execute the stable
separately in CI. Allow the flaky ones to be re-executed once in case
they fail.
2025-07-02 13:14:28 +02:00
Andoni Duarte
3c84cf04b7 chg: nil: Remove references to configure.ac
The Meson build system does not use `configure.ac`.  Remove all mentions
of this file from documentation and scripts.

See #5379

Merge branch 'andoni/remove-references-to-configureac' into 'main'

See merge request isc-projects/bind9!10672
2025-07-02 08:51:10 +00:00
Michał Kępień
fb38223c27 Update documented build commands for fuzzers
Due to the changing the build system to Meson, replace ./configure
invocations with their Meson counterparts in fuzz/FUZZING.md.
2025-07-02 08:50:34 +00:00
Andoni Duarte Pintado
c4c14f0f23 Check meson pairwise testing switches
dangerfile.py checked for new configure switches in `configure.ac`,
these were annotated with "# [pairwise:..." in a leading line. Meson
reads those from `meson_options.txt` instead.
2025-07-02 08:50:34 +00:00
Andoni Duarte Pintado
367889e080 Remove reference to configure in CONTRIBUTING.md
The Meson build system does not use `configure`, so the comment no
longer applies when submitting patches.
2025-07-02 08:50:34 +00:00
Andoni Duarte Pintado
8538c645ca Remove unused reference to SYSTEMTESTTOP
The SYSTEMTESTTOP variable is no longer used in the tests.
2025-07-02 08:50:34 +00:00
Aydın Mercan
e5a4b46fa3 fix: nil: ignore hardening flags on plain builds
The 'plain' optimization level doesn't add any flags and gives the
control to the packager. Similarly, avoid any hardening flags in this
level.

Necessary flags such as `-fno-delete-null-pointer-checks` and
`-fno-strict-aliasing` are still included.

Merge branch 'aydin/plain-build' into 'main'

See merge request isc-projects/bind9!10673
2025-07-01 23:49:47 +03:00
Aydın Mercan
350e81fde8
fix x86 specific flags
There was a mistake in the host machine check in meson
2025-07-01 22:35:20 +03:00
Aydın Mercan
8814c66855
ignore hardening flags on plain builds
The 'plain' optimization level doesn't add any flags and gives the
control to the packager. Similarly, avoid any hardening flags in this
level.

Necessary flags such as `-fno-delete-null-pointer-checks` and
`-fno-strict-aliasing` are still included.
2025-07-01 22:35:20 +03:00
Ondřej Surý
d45109732b fix: usr: Fix the default interface-interval from 60s to 60m
When the interface-interval parser was changed from uint32 parser to
duration parser, the default value stayed at plain number `60` which
now means 60 seconds instead of 60 minutes.  The documentation also
incorrectly states that the value is in minutes.  That has been fixed.

Closes #5246

Merge branch '5246-fix-default-interface-interval' into 'main'

See merge request isc-projects/bind9!10281
2025-07-01 11:58:54 +02:00
Ondřej Surý
de08c0088d
Fix the default interface-interval docs and default value
When the interface-interval parser was changed from uint32 parser to
duration parser, the default value stayed at plain 60 which now means 60
seconds instead of 60 minutes.  Fix the default value and the
documentation to match the reality.
2025-07-01 11:19:57 +02:00
Colin Vidal
8d4748121f new: test: add startup root DNSKEY refresh system test
Root trust anchors are automatically updated as described in RFC5011.
Add a system test which ensures the root DNSKEYs are always queried by
named during startup.

Because this test uses real internet DNS root servers, it is enabled
only when `CI_ENABLE_LIVE_INTERNET_TESTS` is set.

Merge branch 'colin/updaterootdnskey' into 'main'

See merge request isc-projects/bind9!10615
2025-06-30 14:51:20 +02:00
Colin Vidal
b0a33f77dc add startup root DNSKEY refresh system test
Root trust anchors are automatically updated as described in RFC5011.
Add a system test which ensures the root DNSKEYs are always queried by
named during startup.

Because this test uses real internet DNS root servers, it is enabled
only when `CI_ENABLE_LIVE_INTERNET_TESTS` is set.
2025-06-30 13:56:24 +02:00
Ondřej Surý
38cc19d756 fix: dev: Prevent false sharing for the .inuse member of isc_mem_t
Change the .inuse member of memory context to have a loop-local
variable, so there's no contention even when the same memory
context is shared among multiple threads.

Closes #5354

Merge branch '5354-prevent-false-sharing-in-isc_mem' into 'main'

See merge request isc-projects/bind9!10555
2025-06-30 13:23:38 +02:00
Ondřej Surý
5eec9a2ebb
Change the .inuse member of isc_mem to be per-thread/per-loop
The .inuse member was causing a lot of contention between threads using
the same memory context.  Scather the .inuse and .overmem members of
isc_mem_t structure to be an per-tid array of variables to reduce the
contention as the writes are now independent of each other.

The array uses one tad bit nasty trick, as ISC_TID_UNKNOWN is now -1,
the array has been sized to fit the unknown tid with [-1] index into the
array accomplished with `ctx->stat = &ctx->stat_s[1];`.  It will not win
a beauty contest, but it works seamlessly by just passing `isc_tid()` as
an index into the array.

The caveat here is that gathering the real inuse value requires walking
the whole array for all registered tid values (isc_tid_count()).  The
gather part happens only when statistics are being gathered or when
isc_mem_isovermem() is called.  As the isc_mem_isovermem() call happens
only when new data is being added to cache or ADB, it doesn't happen on
the hottest (read-only) path and according to the measurements, it
doesn't slow down neither the cold cache nor the hot cache latency.
2025-06-30 13:23:17 +02:00
Ondřej Surý
f9528b88ae fix: dev: Various cleanups related to the isc_mem unit
Merge branch 'ondrej/tidy-up-isc-mem-unit' into 'main'

See merge request isc-projects/bind9!10671
2025-06-30 13:22:53 +02:00
Ondřej Surý
f689dc2297
Don't use ssize_t for storing difference between sizes
As POSIX guarantees only that the type ssize_t shall be capable of
storing values at least in the range [-1, {SSIZE_MAX}], it can't be used
to calculate the difference between two memory sizes.  Change the logic
for junk filling to test whether the new size is larger than old size
and then use size_t as the result will be always positive.
2025-06-30 13:22:39 +02:00
Ondřej Surý
560047307d
Remove .hi_called member of isc_mem_t structure
The .hi_called member was dead structure member and it hasn't been used
since the overmem callback has been removed in commit
14bdd21e0a7ad5f115bb2427d4f88fe7a84e9324.
2025-06-30 13:22:39 +02:00
Ondřej Surý
d1427e9fa8
Add and use MALLOCX_ZERO_GET() macro to jemalloc_shim.h
Pull MALLOCX_ZERO_GET() macro to align the usage with the jemalloc
jemalloc/internal/jemalloc_internal_types.h header.
2025-06-30 13:22:39 +02:00
Ondřej Surý
c6828bcf8f
Delete jemalloc arena support from isc_mem
The jemalloc arena in isc_mem was added to solve runaway memory problem
for outgoing TCP connections.  In the end, this was a red herring and
the jemalloc arena code is now unused (via e28266bf).  Remove the
support for jemalloc memory arenas as we can restore this at any time if
we need it ever again, but right now it's just a dead code.
2025-06-30 13:22:39 +02:00
Ondřej Surý
74e5f5c6cf
Fix implicit headers when using isc/overflow.h header
In jemalloc_shim.h, we relied on including <isc/overflow.h> implicitly
instead of explicitly and same was happening inside isc/overflow.h - the
stdbool.h (for bool type) was being included implicitly instead of
explicitly.
2025-06-30 13:22:38 +02:00
Aydın Mercan
0afa06f807 fix: nil: do not install manpages for unbuilt binaries
See #5379

Merge branch 'aydin/git-tree-man-fix' into 'main'

See merge request isc-projects/bind9!10627
2025-06-30 12:36:24 +03:00
Aydın Mercan
206d52b727
do not install manpages for unbuilt binaries
Building and installing from a git release installed all manpages
unconditionally even if binaries like dnstap-read were disabled and not
built.

Now the manpage configuration checks for such cases and also cleans up
remaining artifacts and unnecessary pages if the build directory is
reconfigured.
2025-06-30 11:58:13 +03:00
Aydın Mercan
4e7ed1c051
do not install sphinx-build manpages in templated ones exist
When building from the tarball, meson would try to install both
sphinx-built and template configured manpages.

While harmless for now, it might cause issues for future meson version.
2025-06-30 10:40:53 +03:00
Ondřej Surý
97bb7eb4df chg: dev: Change isc_tid to be isc_tid_t type (a signed integer type)
Change the internal type used for isc_tid unit to isc_tid_t to hide the
specific integer type being used for the 'tid'.  Internally, the isc_tid
unit is now using signed integer type.  This allows us to have negatively
indexed arrays that works both for threads with assigned tid and the
threads with unassigned tid.  Additionally, limit the number of threads
(loops) to 512 (compile time default).

Merge branch 'ondrej/tidy-up-isc-tid' into 'main'

See merge request isc-projects/bind9!10656
2025-06-28 14:06:05 +02:00
Ondřej Surý
dd37fd6a49 Add ISC_TID_MAX with default being 512 threads
The ISC_TID_MAX variable allows other units to declare static arrays
with this as size for per-thread/per-loop variables.
2025-06-28 13:32:12 +02:00
Ondřej Surý
1032681af0 Convert the isc/tid.h to use own signed integer isc_tid_t type
Change the internal type used for isc_tid unit to isc_tid_t to hide the
specific integer type being used for the 'tid'.  Internally, the signed
integer type is being used.  This allows us to have negatively indexed
arrays that works both for threads with assigned tid and the threads
with unassigned tid.  This should be used only in specific situations.
2025-06-28 13:32:12 +02:00
Štěpán Balážik
2c58fe486b fix: nil: Only run ci-orphaned-anchors on MR events
Now, it is also run in schedules and most annoyingly on push which means
that it is run twice on a push to a branch where a MR exists and `.gitlab-ci.yml` is changed.

This was an oversight in https://gitlab.isc.org/isc-projects/bind9/-/merge_requests/10654

Merge branch 'stepan/remove-additional-pipeline' into 'main'

See merge request isc-projects/bind9!10668
2025-06-28 10:51:59 +00:00
Štěpán Balážik
7ca18df58a Only run ci-orphaned-anchors on MR events
Now, it is also run in schedules and most annoyingly on push which means
that it is run twice on a push to a branch where a MR exists.
2025-06-27 20:27:14 +02:00
Štěpán Balážik
f7601106bd new: ci: Add a check for defined but never used anchors in .gitlab-ci.yaml
If an new orphan anchor is (`.anchor: &anchor` with no corresponding `*anchor` elsewhere in the file) is introduced the CI job will.

Depends on https://gitlab.isc.org/isc-projects/bind9-qa/-/merge_requests/101 (merge that first and then drop the `--branch` commit).

Merge branch 'stepan/ci-orphaned-anchors' into 'main'

See merge request isc-projects/bind9!10654
2025-06-27 16:41:06 +00:00
Štěpán Balážik
919f5d6419 Remove orphaned anchors in .gitlab-ci.yml
These were left there after previous refactors.
2025-06-27 16:04:22 +00:00
Štěpán Balážik
5ed2b6c080 Add a check for defined but never used anchors in .gitlab-ci.yaml
If a anchor is ever orphaned, this will fail in CI.
2025-06-27 16:04:22 +00:00
Štěpán Balážik
9331451c5f Don't redifine stage:precheck in ci-variables job definition
The value is defined in the *precheck_job anchor.
2025-06-27 16:04:22 +00:00
Štěpán Balážik
8a26cb406c fix: nil: Move root zone mirror system test to a separate directory
This test doesn't require artifact checking but when bundled in the same
directory with the shell based tests, the `system:clang:tsan` job was
failing non-deterministically.

An example of the job failing and succeeding on the same commit:
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/5809299
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/5809447

Merge branch 'stepan/move-root-zone-mirror-test-to-a-separate-directory' into 'main'

See merge request isc-projects/bind9!10659
2025-06-27 15:20:29 +00:00
Štěpán Balážik
d5874d5df9 Move root zone mirror system test to a separate directory
This test doesn't require artifact checking but when bundled in the same
directory with the shell based tests, the `system:clang:tsan` job was
failing non-deterministically.
2025-06-27 15:19:45 +00:00
Nicki Křížek
7bd3547c98 chg: test: Improve pytest log output
- increase clarity of multiline messages
- support `isc.query.*()` query&response logging
- replace use of `print()` statement with proper logging
- omit empty lines from test result output

Merge branch 'nicki/improve-pytest-logging' into 'main'

See merge request isc-projects/bind9!10590
2025-06-27 17:03:54 +02:00
Nicki Křížek
fcf31417dd Log assertion failures right after test result
The extra messages are typically traceback from assertion failures.
Previously, they'd be printed only after all individual test case
results have been printed. That made it difficult to pair the traceback
to the failing test in some cases, as the node information (aka test
name) might not always be present.

Instead, log any extra messages related to a particular test failure
directly after reporting its result, making the failure details more
readily available and easy to connect with a particular test case.
2025-06-27 16:31:49 +02:00
Nicki Křížek
9f3f6ec38e Log command stdout when using isctest.run.cmd()
The command's stdout may provide useful debug info, so make sure we log
it by default. It doesn't seem to have a significant impact on the log
size.
2025-06-27 16:31:49 +02:00
Nicki Křížek
56fec9ba04 Log query and response when using isctest.query.*
Make sure the queries and responses are logged at the DEBUG level, which
may provide useful information in case of failing tests.

This doesn't seem to significantly increase the overall artifacts size.
Previously, pytest.log.txt files from all system tests would take around
3 MB, with this change, it's around 8 MB).
2025-06-27 16:31:49 +02:00
Nicki Křížek
51ac5bdd14 Use proper logging in SPNEGO tests
Avoid using print() and use proper logging facility instead.
2025-06-27 16:31:49 +02:00
Nicki Křížek
1e87b5ffc6 Add options for query&response logging to pytest
In some cases, it's useful to log the sent and received DNS messages.
Add options to enable this on demand. Query is only logged the first
time it's sent, since it doesn't change. If response logging is turned
on, then each response is logged, since it might be different every
time.
2025-06-27 16:31:49 +02:00