2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 05:57:52 +00:00

43024 Commits

Author SHA1 Message Date
Nicki Křížek
a26a55d05e Fix rndc reset-stats documentation
Reformat the section to be more consistent with the rest of the rndc
documentation and avoid using :program: directive which would needlessly
break rst links.

(cherry picked from commit 22bd41e30803fa3417a4845ee74d4c2724b99b46)
2025-04-03 16:19:12 +02:00
Nicki Křížek
200bb9a04c Add missing commands to rndc --help
(cherry picked from commit 7a9e88afaa605dcc8c715d09b9e1e6c70cb7c263)
2025-04-03 16:19:07 +02:00
Nicki Křížek
fb24693f97 Prepare release notes for BIND 9.20.8 2025-04-03 15:56:25 +02:00
Nicki Křížek
f1944f4cc2 Generate changelog for BIND 9.20.8 2025-04-03 15:55:09 +02:00
Nicki Křížek
96bb3a1952 [9.20] fix: usr: Stop caching lack of EDNS support
`named` could falsely learn that a server doesn't support EDNS when
a spoofed response was received; that subsequently prevented DNSSEC
lookups from being made. This has been fixed.

Backport of MR !776  

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

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

Merge branch 'backport-5066-stop-caching-lack-of-edns-support-9.20' into 'v9.20.8-release'

See merge request isc-private/bind9!782
2025-04-03 10:56:50 +00:00
Mark Andrews
c84d3ff4dc Don't cache lack of EDNS based on received responses
Caching prevents server upgrades being detected in a timely manner
and it can also prevent DNSSEC responses being requested.

(cherry picked from commit 90b2f94d9bfa01ae4e8de277f49df26fa2167282)
2025-04-03 12:43:25 +02:00
Ondřej Surý
6bf4390f25 [9.20] fix: usr: Nested DNS validation could cause assertion failure
When multiple nested DNS validations were destroyed out of order,
the EDE context could be freed before all EDE codes were copied,
which could cause an assertion failure. This has been fixed.

Closes #5213

Backport of MR !10365

Merge branch 'backport-5213-use-dns_ede_copy-in-dns_validator-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10366
2025-04-02 17:29:53 +00:00
Ondřej Surý
81468fca59 Don't copy EDE codes if source is same as destination
If the nested DNS validator ends up in the same fetch because of the
loops, the code could be copying the EDE codes from the same source EDE
context as the destination EDE context.  Skip copying the EDE codes if
the source and the destination is the same.

(cherry picked from commit 2988ebae214846d6f8efa41d058aa34f7285a7dc)
2025-04-02 16:42:23 +00:00
Ondřej Surý
01a579d126 Don't pass edectx from fetch_and_forget
Pass NULL as edectx for the fetch_and_forget() fetches as nobody
is reading the EDE contexts and it can mess the main client buffer.

(cherry picked from commit fe48290140632f8ffb9da66567f5ce4a1d40c075)
2025-04-02 16:42:23 +00:00
Ondřej Surý
17d4d178b9 Add static ede context into each validator layer
Instead of passing the edectx from the fetchctx into all subvalidators,
make the ede context ownership explict for dns_resolver_createfetch()
callers, and copy the ede result codes from the children validators to
the parent when finishing the validation process.

(cherry picked from commit d7593196a19497814efbe5d19dcb82adc243bd18)
2025-04-02 16:42:23 +00:00
Arаm Sаrgsyаn
4a645bf9d1 [9.20] chg: nil: Suppress FreeBSD-specific TSAN false-positive lock-order-inversion
TSAN reports a lock-order-inversion (potential deadlock) issue in
`add_trace_entry()`.

While it is true that in one case a lock in the `isc_mem_t` structure is
locked first, and then a lock in the `FILE` structure is locked second,
and in the the second case it is the other way around, this isn't an
issue, because those are `FILE` structures for totally different files,
used in different parts of the code.

Closes #5266

Backport of MR !10355

Merge branch 'backport-5266-freebsd-suppress-tsan-lock-order-inversion-false-positive-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10362
2025-04-02 13:59:11 +00:00
Aram Sargsyan
f47945e8c9 Suppress FreeBSD-specific TSAN false-positive lock-order-inversion
TSAN reports a lock-order-inversion (potential deadlock) issue in
add_trace_entry():

    WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock)
      Cycle in lock order graph: M0001 (0x000000000001) => M0002 (0x000000000002) => M0001
      Mutex M0002 acquired here while holding mutex M0001 in main thread:
        #0 _pthread_mutex_lock /usr/src/contrib/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1342:3
        #1 add_trace_entry lib/isc/mem.c:210:2
        #2 isc__mem_get lib/isc/mem.c:606:2
        #3 isc_buffer_allocate lib/isc/./include/isc/buffer.h:1080:23
        #4 pushandgrow lib/isc/lex.c:321:3
        #5 isc_lex_gettoken lib/isc/lex.c:445:22
        #6 cfg_gettoken lib/isccfg/parser.c:3490:11
        #7 cfg_parse_mapbody lib/isccfg/parser.c:2230:3
        #8 cfg_parse_obj lib/isccfg/parser.c:247:11
        #9 parse2 lib/isccfg/parser.c:628:11
        #10 cfg_parse_file lib/isccfg/parser.c:668:11
        #11 load_configuration bin/named/server.c:8069:13
        #12 run_server bin/named/server.c:9518:2
        #13 isc__async_cb lib/isc/async.c:110:3
        #14 uv__async_io /tmp/libuv-1.50.0/src/unix/async.c:208:5
        #15 uv__io_poll /tmp/libuv-1.50.0/src/unix/kqueue.c:369:9
        #16 uv_run /tmp/libuv-1.50.0/src/unix/core.c:460:5
        #17 loop_thread lib/isc/loop.c:327:6
        #18 thread_body lib/isc/thread.c:89:8
        #19 isc_thread_main lib/isc/thread.c:124:2
        #20 isc_loopmgr_run lib/isc/loop.c:513:2
        #21 main bin/named/main.c:1469:2
      Mutex M0001 previously acquired by the same thread here:
        #0 _pthread_mutex_lock /usr/src/contrib/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1342:3
        #1 _flockfile /usr/src/lib/libc/stdio/_flock_stub.c:72:3
        #2 cfg_gettoken lib/isccfg/parser.c:3490:11
        #3 cfg_parse_mapbody lib/isccfg/parser.c:2230:3
        #4 cfg_parse_obj lib/isccfg/parser.c:247:11
        #5 parse2 lib/isccfg/parser.c:628:11
        #6 cfg_parse_file lib/isccfg/parser.c:668:11
        #7 load_configuration bin/named/server.c:8069:13
        #8 run_server bin/named/server.c:9518:2
        #9 isc__async_cb lib/isc/async.c:110:3
        #10 uv__async_io /tmp/libuv-1.50.0/src/unix/async.c:208:5
        #11 uv__io_poll /tmp/libuv-1.50.0/src/unix/kqueue.c:369:9
        #12 uv_run /tmp/libuv-1.50.0/src/unix/core.c:460:5
        #13 loop_thread lib/isc/loop.c:327:6
        #14 thread_body lib/isc/thread.c:89:8
        #15 isc_thread_main lib/isc/thread.c:124:2
        #16 isc_loopmgr_run lib/isc/loop.c:513:2
        #17 main bin/named/main.c:1469:2
      Mutex M0001 acquired here while holding mutex M0002 in main thread:
        #0 _pthread_mutex_lock /usr/src/contrib/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1342:3
        #1 _flockfile /usr/src/lib/libc/stdio/_flock_stub.c:72:3
        #2 print_active lib/isc/mem.c:629:3
        #3 isc_mem_stats lib/isc/mem.c:694:2
        #4 main bin/named/main.c:1498:4
      Mutex M0002 previously acquired by the same thread here:
        #0 _pthread_mutex_lock /usr/src/contrib/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1342:3
        #1 isc_mem_stats lib/isc/mem.c:668:2
        #2 main bin/named/main.c:1498:4
    SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) lib/isc/mem.c:210:2 in add_trace_entry

In the first stack frame ('M0001'->'M0002' lock order) cfg_gettoken()
uses flockfile() to lock 'M0001' for the 'FILE' object associated with
the configuration file (e.g. the configuration file itself and
whatever it includes, like a zone database), then it locks a memory
context mutex M0002.

In the other stack frmae ('M0002'->'M0001' lock order) isc_mem_stats()
locks a memory context mutex M0002, then it uses fprintf(), which
internally locks a 'M0001' mutex with flockfile() to write into the
'named.memstats' memory statistics file.

While it is true that in one case a lock in the 'isc_mem_t' structure is
locked first, and then a lock in the 'FILE' structure is locked second,
and in the the second case it is the other way around, this isn't an
issue, because those are 'FILE' structures for totally different files,
used in different parts of the code.

It was also manually confirmed that 'named.memstats' doesn't get
processed by cfg_gettoken(), and is used only in the second stack
frame's code flow when named is exiting.

(cherry picked from commit 33dff63cbb731dbc0fdb8a6df021b8bf638f8f1d)
2025-04-02 13:58:55 +00:00
Andoni Duarte
d6cc4f9ac9 [9.20] chg: ci: Update issue closing regex in dangerfile.py
Update issue regex in danger file
    
The regular expression in `dangerfile.py` has been updated to match
the one in GitLab and bind9-qa (isc-projects/bind9-qa!41), i.e.
https://docs.gitlab.com/user/project/issues/managing_issues/#default-closing-pattern.

Backport of MR !10361

Merge branch 'backport-andoni/update-issue-regex-in-danger-file-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10363
2025-04-02 13:49:11 +00:00
Andoni Duarte Pintado
51712a9d31 Update issue closing regex in dangerfile.py
Update the regular expression used for extracting references to GitLab
issues closed by a given merge request so that it is identical to the
one used by GitLab [1].

See also isc-projects/bind9-qa!41

[1] https://docs.gitlab.com/user/project/issues/managing_issues/#default-closing-pattern

(cherry picked from commit 5298d0fcb8012ec805d632bef34302a168cc3c87)
2025-04-02 13:42:40 +00:00
Nicki Křížek
1cc628362b [9.20] new: ci: Allow pushing branches and tags to customer git repos
For pipelines in the private repository, add an optional manual job,
which allows the current branch to be pushed into the specified
customer's git repository. This can be useful to provide patch previews
for early testing.

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

Backport of MR !10323

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

See merge request isc-projects/bind9!10356
2025-04-02 11:12:56 +00:00
Nicki Křížek
5bbc38aa30 Allow pushing branches and tags to customer git repos
For pipelines in the private repository, add an optional manual job,
which allows the current branch to be pushed into the specified
customer's git repository. This can be useful to provide patch previews
for early testing.

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

(cherry picked from commit 378b412e94a40ee74ab5c9edfb3a2059612a59ff)
2025-04-02 11:04:16 +00:00
Arаm Sаrgsyаn
f6ed3b1ce4 [9.20] chg: nil: Suppress FreeBSD-specific TSAN false-positive data race
TSAN reports a data race in FreeBSD's memset(), called by its
__crt_calloc() memory allocation function. There is a very similar
bug report [1] in FreeBSD bug tracker, and an existing code-review [2]
that tries to address an issue, the description of which is very
similar to what we are seeing.

Suppress this report by adding its signature to '.tsan-suppress'.

[1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282794

[2] https://reviews.freebsd.org/D28536?id=86694

Closes #5267

Backport of MR !10353

Merge branch 'backport-5267-freebsd-suppress-tsan-data-race-false-positive-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10354
2025-04-02 09:47:49 +00:00
Aram Sargsyan
47fdbf15f3 Suppress FreeBSD-specific TSAN false-positive data race
TSAN reports a data race in FreeBSD's memset(), called by its
__crt_calloc() memory allocation function. There is a very similar
bug report [1] in FreeBSD bug tracker, and an existing code-review [2]
that tries to address an issue, the description of which is very
similar to what we are seeing.

Suppress this report by adding its signature to '.tsan-suppress'.

[1] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=282794
[2] https://reviews.freebsd.org/D28536?id=86694

(cherry picked from commit 40a91f51d72921d07d50c4315beb9ffa6d2dd577)
2025-04-02 08:38:02 +00:00
Artem Boldariev
92eb6416e5 [9.20] chg: dev: Carefully check if the server name used for SNI is a hostname
Previously the code would not check if the string intended to be used
for SNI is a hostname.

See also: !9923

Closes #5225

Backport of MR !10254

Merge branch 'backport-5225-dig-sni-fix-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10347
2025-03-31 12:42:51 +00:00
Artem Boldariev
8459d99ec2 Dispatch: carefully check if the server name for SNI is a hostname
Previously the code would not check if the string intended to be used
for SNI is a hostname.

(cherry picked from commit 2592e309c77a3dab7580a7b98b69d8c0a7e10062)
2025-03-31 15:07:55 +03:00
Artem Boldariev
d6c92d3f07 Dig: carefully check if the server name for SNI is a hostname
Previously the code would not check if the string intended to be used
for SNI is a hostname.

(cherry picked from commit 16a306687a2049dff0bb4139165fc22381905643)
2025-03-31 15:07:33 +03:00
Artem Boldariev
634625be07 Add isc_tls_valid_sni_hostname()
Add a function that checks if a 'hostname' is not a valid IPv4 or IPv6
address. Returns 'true' if the hostname is likely a domain name, and
'false' if it represents an IP address.

(cherry picked from commit 1f199ee60654e5cf47821f3b96b980bff34769bc)
2025-03-31 15:06:59 +03:00
Colin Vidal
d05f4b4b9b [9.20] fix: test: fix out-of-tree mem_test
Previously changed mem_test (!10320) introduces a test which checks for
the value of `__FILE__`, which is different if the build is done
out-of-tree or not, even though this is not relevant for the test (only
the base filename is). This result in a broken test for out-of-tree
builds. Fix this by changing the way the "grep" is done in the test,
ignoring the optional path prefix in the filename.

Backport of MR !10343

Merge branch 'backport-colin-fix-outoftree-memtest-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10344
2025-03-28 15:30:06 +00:00
Colin Vidal
30a5031c8c fix out-of-tree mem_test
Previously changed mem_test (!10320) introduces a test which checks for
the value of `__FILE__`, which is different if the build is done
out-of-tree or not, even though this is not relevant for the test (only
the base filename is). This result in a broken test for out-of-tree
builds. Fix this by changing the way the "grep" is done in the test,
ignoring the optional path prefix in the filename.

(cherry picked from commit b7ae514b3b48b2a8a75729a6621ca36a37c530f8)
2025-03-28 14:55:15 +00:00
Colin Vidal
59635e33d0 [9.20] fix: dev: copy __FILE__ when allocating memory
When allocating memory under -m trace|record, the __FILE__ pointer is
stored, so it can be printed out later in order to figure out in which
file an allocation leaked. (among others, like the line number).

However named crashes when called with -m record and using a plugin
leaking memory. The reason is that plugins are unloaded earlier than
when the leaked allocations are dumped (obviously, as it's done as late
as possible). In such circumstances, `__FILE__` is dangling because the
dynamically loaded library (the plugin) is not in memory anymore.

Fix the crash by systematically copying the `__FILE__` string
instead of copying the pointer. Of course, this make each allocation to
consume a bit more memory (and longer, as it needs to calculate the
length of `__FILE__`) but this occurs only under -m trace|record debugging
flags.

Backport of MR !10320

Merge branch 'backport-colin-memdump-plugins-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10336
2025-03-27 15:49:17 +00:00
Colin Vidal
c1352b79ca copy __FILE__ when allocating memory
When allocating memory under -m trace|record, the __FILE__ pointer is
stored, so it can be printed out later in order to figure out in which
file an allocation leaked. (among others, like the line number).

However named crashes when called with -m record and using a plugin
leaking memory. The reason is that plugins are unloaded earlier than
when the leaked allocations are dumped (obviously, as it's done as late
as possible). In such circumstances, __FILE__ is dangling because the
dynamically loaded library (the plugin) is not in memory anymore.

Fix the crash by systematically copying the __FILE__ string
instead of copying the pointer. Of course, this make each allocation to
consume a bit more memory (and longer, as it needs to calculate the
length of __FILE__) but this occurs only under -m trace|record debugging
flags.

In term of unit test, because grepping in C is not fun, and because the
whole "syntax" of the dump output is tested in other tests, this simply
search for a substring in the whole buffer to make sure the expected
allocations are found.

(cherry picked from commit 4eb2cd364ac866c924e761c0596abae5e6428146)
2025-03-27 14:21:00 +01:00
Arаm Sаrgsyаn
7c4603fc4a [9.20] new: usr: Add an rndc command to reset some statistics counters
The new ``reset-stats`` command for ``rndc`` allows some statistics
counters to be reset during runtime. At the moment only two "high-water"
counters are supported, so the ability to reset them after the
initial peaks during the server's "warm-up" phase may be useful for
some operators.

Closes #5251

Backport of MR !10318

Merge branch 'backport-5251-feature-rndc-reset-high-water-statistics-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10335
2025-03-27 10:18:37 +00:00
Aram Sargsyan
06b86773f4 Document rndc reset-stats
Add documentation for 'rndc reset-stats'.

(cherry picked from commit be8f4f68cb7a30c47f4a9ec76177f3a215595e8c)
2025-03-27 09:36:44 +00:00
Aram Sargsyan
56c9bda62c Test rndc reset-stats counter-name
A a check to test if 'rndc reset-stats' works as expected.

(cherry picked from commit c917b9af38ec280fb98c630519ea739f64f094b1)
2025-03-27 09:36:44 +00:00
Aram Sargsyan
110823b149 Implement rndc reset-stats counter-name
This new rndc option allows to reset some statistics counters during
runtime. At this moment only the high-water type counters are supported
as such an ability to reset them after the initial peaks during the
server's "warm-up" phase can be useful for some operators.

(cherry picked from commit bab20802b3a8e44b45cbac24b556107680ed71d4)
2025-03-27 09:36:43 +00:00
Colin Vidal
7fd60a5f5d [9.20] new: test: IPv6 case to isc_netaddr_masktoprefixlen tests
Unit test for isc_netaddr_masktoprefixlen were missing IPv6 mask cases.
Add those and few other IPv4 cases. Also, the test is refactored in
order to make it easy to add new cases.

Backport of MR !10328

Merge branch 'backport-colin-netaddrmasktest-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10332
2025-03-26 16:43:23 +00:00
Colin Vidal
ad3e09a6af IPv6 case to isc_netaddr_masktoprefixlen tests
Unit test for isc_netaddr_masktoprefixlen were missing IPv6 mask cases.
Add those and few other IPv4 cases. Also, the test is refactored in
order to make it easy to add new cases.

(cherry picked from commit ad2c3fa4f72b36be562a45b4d129c4cb04195cdc)
2025-03-26 13:30:46 +00:00
Michal Nowak
f1c091b445 [9.20] fix: test: Silence warning initialising compressed
The string literal initialalising compressed was too big for the 
array as it has an unwanted NUL terminator.  This is allowed for 
in C for historical reasons but produces a warning with some
compilers.  Adjust the declaration to include the NUL and adjust
the users to pass in an adjusted size which excludes the NUL rather
than sizeof(compressed).

Closes #5258

Backport of MR !10326

Merge branch 'backport-5258-avoid-warning-initialising-compresss-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10331
2025-03-26 13:18:42 +00:00
Mark Andrews
6d2bd55794 Silence warning when initialising compress
The string literal initialalising compressed was too big for the
array as it has an unwanted NUL terminator.  This is allowed for
in C for historical reasons but produces a warning with some
compilers.  Adjust the declaration to include the NUL and adjust
the users to pass in an adjusted size which excludes the NUL rather
than sizeof(compressed).

(cherry picked from commit 6a6b6be824ead47e24d48ffd8ab7c8277618fbc8)
2025-03-26 12:43:55 +00:00
Ondřej Surý
b0c6af6ad7 [9.20] fix: dev: Validating ADB fetches could cause a crash in import_rdataset()
Previously, in some cases, the resolver could return rdatasets of type CNAME or DNAME without the result code being set to `DNS_R_CNAME` or `DNS_R_DNAME`. This could trigger an assertion failure in the ADB. The resolver error has been fixed.

Closes #5201

Backport of MR !10172

Backport of MR !10178

Merge branch 'backport-5201-adb-cname-error-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10329
2025-03-26 12:09:11 +00:00
Evan Hunt
3dd7691650
fix the fetchresponse result for CNAME/DNAME
the fix in commit 1edbbc32b4 was incomplete; the wrong
event result could also be set in cache_name() and validated().

(cherry picked from commit 9ebeb60174f3074f96b7c00dcda852a5bd61bad6)
2025-03-26 11:59:48 +01:00
Evan Hunt
8f84f8293a
set eresult based on the type in ncache_adderesult()
when the caching of a negative record failed because of the
presence of a positive one, ncache_adderesult() could override
this to ISC_R_SUCCESS. this could cause CNAME and DNAME responses
to be handled incorrectly.  ncache_adderesult() now sets the result
code correctly in such cases.

(cherry picked from commit 1edbbc32b4cca228e05cb9646ad623cf31027a95)
2025-03-26 11:59:37 +01:00
Michal Nowak
466186b8ab [9.20] fix: test: Limit X-Bloat header size to 100KB
Otherwise curl 8.13 rejects the line with:

    I:Check HTTP/1.1 keep-alive with truncated stream (21)
    curl: option --header: error encountered when reading a file
    curl: try 'curl --help' or 'curl --manual' for more information

Also, see https://github.com/curl/curl/pull/16572.

Closes #5249

Backport of MR !10319

Merge branch 'backport-5249-statschannel-limit-http-header-size-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10321
2025-03-25 16:39:29 +00:00
Michal Nowak
a8a59d5c63 Limit X-Bloat header size to 100KB
Otherwise curl 8.13 rejects the line with:

    I:Check HTTP/1.1 keep-alive with truncated stream (21)
    curl: option --header: error encountered when reading a file
    curl: try 'curl --help' or 'curl --manual' for more information

Also, see https://github.com/curl/curl/pull/16572.

(cherry picked from commit bcb931f4a8f91a5bcae5d13a0fb809feff767b63)
2025-03-25 15:53:24 +00:00
Ondřej Surý
9986dad2dc fix: usr: [9.20] Wait for memory reclamation to finish in named-checkconf
Previously, when named-checkzone loaded the zone to the QP database, the delayed
memory reclamation could cause an assertion check on exit. This has
been fixed.

Closes #5220

Merge branch '5220-add-rcu-barrier-to-named-checkconf-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10307
2025-03-25 10:00:46 +00:00
Ondřej Surý
4b4eb29452
Wait for memory reclamation to finish in named-checkconf
When named-checkzone loads the zone to the QP database, the delayed
memory reclamation could cause an assertion check on exit.  Add RCU
barrier to wait for the memory reclamation to complete.
2025-03-25 11:00:00 +01:00
Ondřej Surý
4297ae4795 [9.20] fix: dev: Fix invalid cache-line padding for qpcache buckets
The isc_queue_t was missing in the calculation of the required
padding size inside the qpcache bucket structure.

Backport of MR !10306

Merge branch 'backport-ondrej/qpcache-fix-invalid-padding-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10317
2025-03-25 09:59:33 +00:00
Ondřej Surý
817a0a8e8e Fix invalid cache-line padding for qpcache buckets
The isc_queue_t was missing in the calculation of the required
padding size inside the qpcache bucket structure.

(cherry picked from commit 3ef9b09620c3c3360498098fad5a33b765767ab2)
2025-03-25 09:59:02 +00:00
Evan Hunt
5d126d8081 [9.20] fix: usr: Don't enforce NOAUTH/NOCONF flags in DNSKEYs
All DNSKEY keys are able to authenticate. The `DNS_KEYTYPE_NOAUTH` (and `DNS_KEYTYPE_NOCONF`) flags were defined for the KEY rdata type, and are not applicable to DNSKEY. Previously, however, because the DNSKEY implementation was built on top of KEY, the `_NOAUTH` flag prevented authentication in DNSKEYs as well. This has been corrected.

Closes #5240

Backport of MR !10261

Merge branch 'backport-5240-ignore-noauth-flag-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10315
2025-03-25 07:23:26 +00:00
Mark Andrews
4a1ebbedad DNS_KEYTYPE_NOKEY is only applicable to KEY
(cherry picked from commit 53c6721abc49746d91e61a5bb2cbbea24d64dd72)
2025-03-24 23:52:02 -07:00
Evan Hunt
080299bf49 Don't check DNS_KEYFLAG_NOAUTH
All DNSKEY keys are able to authenticate. The DNS_KEYTYPE_NOAUTH
(and DNS_KEYTYPE_NOCONF) flags were defined for the KEY rdata type,
and are not applicable to DNSKEY.

Previously, because the DNSKEY implementation was built on top of
KEY, the NOAUTH flag prevented authentication in DNSKEYs as well.
This has been corrected.

(cherry picked from commit 5c21576f82f9f62c2e22aac920a37a4013ac3a80)
2025-03-24 23:52:02 -07:00
Evan Hunt
dc1ddd3e8a Tidy up keyvalue.h definitions
Use enums for DNS_KEYFLAG_, DNS_KEYTYPE_, DNS_KEYOWNER_, DNS_KEYALG_,
and DNS_KEYPROTO_ values.

Remove values that are never used.

Eliminate the obsolete DNS_KEYFLAG_SIGNATORYMASK. Instead, add three
more RESERVED bits for the key flag values that it covered but which
were never used.

(cherry picked from commit fee1ba40df939f25fc9258b2681a1a2bd7965f5d)
2025-03-25 06:40:49 +00:00
Evan Hunt
42ab4fce4a [9.20] rem: dev: Remove dns_qpmulti_lockedread declaration
This function was removed in 6217e434b57bd5d60ed69f792ae9a1a65a008f57 but not from the header file.

Backport of MR !10308

Merge branch 'backport-matthijs-remove-unused-qpmulti-lockedread-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10314
2025-03-25 06:37:14 +00:00
Matthijs Mekking
c0e92c6df9 Remove dns_qpmulti_lockedread declaration
This function was removed in 6217e434b57bd5d60ed69f792ae9a1a65a008f57
but not from the header file.

(cherry picked from commit 2c52aea3dc4093dfddc704e1b173f8f38543b4c0)
2025-03-25 06:02:17 +00:00
Michał Kępień
de2f0de267 [9.20] chg: test: Use isctest.asyncserver in the "upforwd" test
Replace the custom DNS server used in the "upforwd" system test with new
code based on the isctest.asyncserver module.  The ans4 server currently
used in that test is a copy of bin/tests/system/ans.pl modified to
receive queries over UDP and TCP without ever responding to any of them.

Closes #5012

Backport of MR !10283

Merge branch 'backport-5012-upforwd-asyncserver-9.20' into 'bind-9.20'

See merge request isc-projects/bind9!10312
2025-03-25 04:46:58 +00:00