]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
3 years agoBump socket.create_connection() timeout to 10 seconds
Michal Nowak [Fri, 9 Sep 2022 14:41:00 +0000 (16:41 +0200)] 
Bump socket.create_connection() timeout to 10 seconds

The tcp Pytest on OpenBSD fairly reliably fails when receive_tcp()
on a socket is attempted:

    >           (response, rtime) = dns.query.receive_tcp(sock, timeout())

    tests-tcp.py:50:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    /usr/local/lib/python3.9/site-packages/dns/query.py:659: in receive_tcp
        ldata = _net_read(sock, 2, expiration)
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    sock = <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=6>
    count = 2, expiration = 1662719959.8106785

        def _net_read(sock, count, expiration):
            """Read the specified number of bytes from sock.  Keep trying until we
            either get the desired amount, or we hit EOF.
            A Timeout exception will be raised if the operation is not completed
            by the expiration time.
            """
            s = b''
            while count > 0:
                try:
    >               n = sock.recv(count)
    E               socket.timeout: timed out

This is because the socket is already closed.

Bump the socket connection timeout to 10 seconds.

3 years agoMerge branch '3542-gracefuly-handle-cancelled-http-read-during-sending' into 'main'
Ondřej Surý [Thu, 15 Sep 2022 08:57:19 +0000 (08:57 +0000)] 
Merge branch '3542-gracefuly-handle-cancelled-http-read-during-sending' into 'main'

Handle canceled read during sending data over stats channel

Closes #3542

See merge request isc-projects/bind9!6773

3 years agoAdd CHANGES and release note for [GL #3542]
Ondřej Surý [Fri, 9 Sep 2022 08:48:13 +0000 (10:48 +0200)] 
Add CHANGES and release note for [GL #3542]

3 years agoProvide stronger wording about the security of statistics channel
Ondřej Surý [Wed, 14 Sep 2022 12:18:32 +0000 (14:18 +0200)] 
Provide stronger wording about the security of statistics channel

Add more text about the importance of properly securing the statistics
channel and what is and what is not considered a security vulnerability.

3 years agoHandle canceled read during sending data over stats channel
Ondřej Surý [Thu, 8 Sep 2022 16:24:57 +0000 (18:24 +0200)] 
Handle canceled read during sending data over stats channel

An assertion failure would be triggered when the TCP connection
is canceled during sending the data back to the client.

Don't require the state to be `RECV` on non successful read to
gracefully handle canceled TCP connection during the SEND state of the
HTTPD channel.

3 years agoMerge branch '1176-add-support-for-sd_notify-interface-to-better-integrate-on-linux...
Petr Špaček [Thu, 15 Sep 2022 08:17:20 +0000 (08:17 +0000)] 
Merge branch '1176-add-support-for-sd_notify-interface-to-better-integrate-on-linux' into 'main'

Add support for reporting status via sd_notify()

Closes #1176

See merge request isc-projects/bind9!5514

3 years agoAdd CHANGES and release note for [GL #1176]
Ondřej Surý [Thu, 21 Oct 2021 08:02:45 +0000 (10:02 +0200)] 
Add CHANGES and release note for [GL #1176]

3 years agoAdd support for reporting status via sd_notify()
Ondřej Surý [Wed, 20 Oct 2021 16:14:49 +0000 (18:14 +0200)] 
Add support for reporting status via sd_notify()

sd_notify() may be called by a service to notify the service manager
about state changes. It can be used to send arbitrary information,
encoded in an environment-block-like string. Most importantly, it can be
used for start-up completion notification.

Add libsystemd check to autoconf script and when the library is detected
add calls to sd_notify() around the server->reload_status changes.

Co-authored-by: Petr Špaček <pspacek@isc.org>
3 years agoMerge branch 'pspacek/log-no-recursion-reason' into 'main'
Petr Špaček [Thu, 15 Sep 2022 07:40:17 +0000 (07:40 +0000)] 
Merge branch 'pspacek/log-no-recursion-reason' into 'main'

Log reasons why ACL denied recursion or cache peek

See merge request isc-projects/bind9!6669

3 years agoAdd tests for the new log messages with refusal reason
Evan Hunt [Wed, 14 Sep 2022 19:49:20 +0000 (12:49 -0700)] 
Add tests for the new log messages with refusal reason

Update the allow-query test to check for the new log messages.

3 years agoCHANGES note for [GL !6669]
Petr Špaček [Wed, 14 Sep 2022 10:32:41 +0000 (12:32 +0200)] 
CHANGES note for [GL !6669]

3 years agoLog reason why cache peek is not available
Petr Špaček [Fri, 5 Aug 2022 13:21:35 +0000 (15:21 +0200)] 
Log reason why cache peek is not available

Log which ACL caused RD=0 query into cache to be refused.
Expected performance impact is negligible.

3 years agoLog reason why recursion is not available
Petr Špaček [Fri, 5 Aug 2022 12:03:30 +0000 (14:03 +0200)] 
Log reason why recursion is not available

Log which ACL caused RA=0 condition.
Expected performance impact is negligible.

3 years agoMerge branch '3525-key-id-clashes-across-algorithms-cause-problems-with-statistics...
Mark Andrews [Thu, 15 Sep 2022 01:04:17 +0000 (01:04 +0000)] 
Merge branch '3525-key-id-clashes-across-algorithms-cause-problems-with-statistics' into 'main'

Resolve "key id clashes across algorithms cause problems with statistics"

Closes #3525

See merge request isc-projects/bind9!6745

3 years agoAdd a release note for [GL #3525]
Mark Andrews [Thu, 8 Sep 2022 00:01:25 +0000 (10:01 +1000)] 
Add a release note for [GL #3525]

3 years agoAdd a CHANGES note for [GL #3525]
Mark Andrews [Wed, 7 Sep 2022 23:59:10 +0000 (09:59 +1000)] 
Add a CHANGES note for [GL #3525]

3 years agoEmit key algorithm + key id in dnssec signing statsistics
Mark Andrews [Wed, 7 Sep 2022 23:48:27 +0000 (09:48 +1000)] 
Emit key algorithm + key id in dnssec signing statsistics

If there was a collision of key id across algorithms it was not
possible to determine where counter applies to which algorithm for
xml statistics while for json only one of the values was emitted.
The key names are now "<algorithm-number>+<id>" (e.g. "8+54274").

3 years agoMerge branch 'each-remove-resolve' into 'main'
Evan Hunt [Wed, 14 Sep 2022 17:20:52 +0000 (17:20 +0000)] 
Merge branch 'each-remove-resolve' into 'main'

remove 'resolve' test binary

See merge request isc-projects/bind9!6733

3 years agoremove 'resolve' test binary
Evan Hunt [Tue, 6 Sep 2022 20:35:27 +0000 (13:35 -0700)] 
remove 'resolve' test binary

the 'resolve' binary was added for testing dns_client as part of
the export library. the export libraries are no longer supported,
and tests using 'delv' provide the same coverage, so 'resolve' can
be removed now.

3 years agoMerge branch 'each-cleanup-dns_request' into 'main'
Evan Hunt [Wed, 14 Sep 2022 17:14:01 +0000 (17:14 +0000)] 
Merge branch 'each-cleanup-dns_request' into 'main'

remove dns_request_create()

See merge request isc-projects/bind9!6753

3 years agomerge dns_request_createvia() into dns_request_create()
Evan Hunt [Thu, 8 Sep 2022 18:43:41 +0000 (11:43 -0700)] 
merge dns_request_createvia() into dns_request_create()

dns_request_create() was a front-end to dns_request_createvia() that
was only used by test binaries. dns_request_createvia() has been
renamed to dns_request_create(), and the test programs that formerly
used dns_request_create() have been updated to use the new parameters.

3 years agoMerge branch '3399-random-device-ancient' into 'main'
Evan Hunt [Wed, 14 Sep 2022 16:41:15 +0000 (16:41 +0000)] 
Merge branch '3399-random-device-ancient' into 'main'

flag "random-device" as ancient

Closes #3399

See merge request isc-projects/bind9!6769

3 years agoCHANGES for [GL #3399]
Evan Hunt [Wed, 14 Sep 2022 01:17:55 +0000 (18:17 -0700)] 
CHANGES for [GL #3399]

3 years agoflag "random-device" as ancient
Evan Hunt [Wed, 14 Sep 2022 01:13:51 +0000 (18:13 -0700)] 
flag "random-device" as ancient

the "random-device" option was made non-functional in 9.13. this commit
removes it from the configuration parser; setting it is now an error.

3 years agoMerge branch '3537-idna-test' into 'main'
Tony Finch [Wed, 14 Sep 2022 12:39:08 +0000 (12:39 +0000)] 
Merge branch '3537-idna-test' into 'main'

Fix dig idna test on Debian 10 "buster"

Closes #3537

See merge request isc-projects/bind9!6767

3 years agoFix dig idna test on Debian 10 "buster"
Tony Finch [Tue, 13 Sep 2022 16:17:55 +0000 (17:17 +0100)] 
Fix dig idna test on Debian 10 "buster"

The test expected `xn--ah-` to be treated as a syntax error (punycode
requires letters after the last hyphen) but libidn2 on buster
converted the label to `ah` instead. To avoid this bug, change the
invalid label to `xn--0000h` which translates to an out-of-range
unicode codepoint (beyond the maximum value) which is corectly
trated as invalid in older libidn2.

3 years agoMerge branch '3536-out-of-tree' into 'main'
Tony Finch [Wed, 14 Sep 2022 10:23:29 +0000 (10:23 +0000)] 
Merge branch '3536-out-of-tree' into 'main'

Fix out-of-tree tests

Closes #3536

See merge request isc-projects/bind9!6766

3 years agoFix out-of-tree tests
Tony Finch [Tue, 13 Sep 2022 10:35:08 +0000 (11:35 +0100)] 
Fix out-of-tree tests

The change to `testsock.pl` in commit 258a896a broke the system
tests in out-of-tree builds because `ifconfig.sh.in` is not
copied to the worktree. Use `ifconfig.sh` instead.

3 years agoMerge branch '2295-add-the-ability-to-specify-that-a-server-supports-cookies' into... 6770/head
Mark Andrews [Wed, 14 Sep 2022 01:36:42 +0000 (01:36 +0000)] 
Merge branch '2295-add-the-ability-to-specify-that-a-server-supports-cookies' into 'main'

Resolve "Add the ability to specify that a server supports COOKIES."

Closes #2295

See merge request isc-projects/bind9!4410

3 years agoAdd CHANGES and release notes for [GL #2295]
Mark Andrews [Mon, 23 Nov 2020 23:44:40 +0000 (10:44 +1100)] 
Add CHANGES and release notes for [GL #2295]

3 years agoCheck "require-cookie yes;" triggers TCP fallback on no cookie
Mark Andrews [Wed, 10 Nov 2021 05:41:46 +0000 (16:41 +1100)] 
Check "require-cookie yes;" triggers TCP fallback on no cookie

3 years agoAdd server clause require-cookie
Mark Andrews [Mon, 23 Nov 2020 23:44:40 +0000 (10:44 +1100)] 
Add server clause require-cookie

Specifies if an UDP response requires a DNS COOKIE or not.
Fallback to TCP if not present and not TSIG signed.

3 years agoMerge branch '3520-rndc-shutdown-hang' into 'main'
Evan Hunt [Mon, 12 Sep 2022 20:34:32 +0000 (20:34 +0000)] 
Merge branch '3520-rndc-shutdown-hang' into 'main'

prevent a possible shutdown hang in rndc

See merge request isc-projects/bind9!6734

3 years agoprevent a possible shutdown hang in rndc
Evan Hunt [Tue, 6 Sep 2022 21:13:23 +0000 (14:13 -0700)] 
prevent a possible shutdown hang in rndc

In rndc_recvdone(), if 'sends' was not 0, then 'recvs' was not
decremented, in which case isc_loopmgr_shutdown() was never reached,
which could cause a hang. (This has not been observed to happen, but
the code was incorrect on examination.)

3 years agoMerge branch 'fanf-tolower' into 'main'
Tony Finch [Mon, 12 Sep 2022 12:08:06 +0000 (12:08 +0000)] 
Merge branch 'fanf-tolower' into 'main'

De-duplicate `tolower()`

See merge request isc-projects/bind9!6516

3 years agoCHANGES note for [GL !6516]
Tony Finch [Thu, 30 Jun 2022 15:31:15 +0000 (16:31 +0100)] 
CHANGES note for [GL !6516]

[cleanup] Move the duplicated ASCII case conversion tables to
isc_ascii where they can be shared, and replace the
various hot-path tolower() loops with calls to new
isc_ascii implementations.

3 years agoTests and benchmark for isc_ascii
Tony Finch [Sat, 25 Jun 2022 14:29:54 +0000 (15:29 +0100)] 
Tests and benchmark for isc_ascii

The test is to verify basic functionality. The benchmark compares a
number of alternative tolower() implementations on large and small
strings.

3 years agoGeneral-purpose unrolled ASCII tolower() loops
Tony Finch [Mon, 27 Jun 2022 11:57:28 +0000 (12:57 +0100)] 
General-purpose unrolled ASCII tolower() loops

When converting a string to lower case, the compiler is able to
autovectorize nicely, so a nice simple implementation is also very
fast, comparable to memcpy().

Comparisons are more difficult for the compiler, so we convert eight
bytes at a time using "SIMD within a register" tricks. Experiments
indicate it's best to stick to simple loops for shorter strings and
the remainder of long strings.

3 years agoConsolidate some ASCII tables in `isc/ascii` and `isc/hex`
Tony Finch [Fri, 24 Jun 2022 21:11:02 +0000 (22:11 +0100)] 
Consolidate some ASCII tables in `isc/ascii` and `isc/hex`

There were a number of places that had copies of various ASCII
tables (case conversion, hex and decimal conversion) that are intended
to be faster than the ctype.h macros, or avoid locale pollution.

Move them into libisc, and wrap the lookup tables with macros that
avoid the ctype.h gotchas.

3 years agoMerge branch '3519-macos-tests' into 'main'
Tony Finch [Mon, 12 Sep 2022 11:14:27 +0000 (11:14 +0000)] 
Merge branch '3519-macos-tests' into 'main'

System test fixes for macOS

Closes #3519

See merge request isc-projects/bind9!6719

3 years agoSkip the xfer test when Net::DNS is too old
Tony Finch [Thu, 1 Sep 2022 11:08:52 +0000 (12:08 +0100)] 
Skip the xfer test when Net::DNS is too old

This allows the system tests to run to completion on macOS
without requiring extra modules from CPAN.

3 years agoThe system tests are using another IP address
Tony Finch [Wed, 31 Aug 2022 20:09:06 +0000 (21:09 +0100)] 
The system tests are using another IP address

Reduce the number of places that know about the number of IP addresses
required by the system tests, by changing `testsock.pl` to read the
`max` from `ifconfig.sh.in`. This should make the test runner fail
early with a clear message when the interfaces have been set up by an
obsolete script.

Add comments to cross-reference `ifconfig.sh.in`, `testsock.pl`, and
`org.isc.bind.system` to make it easier to remember what needs
updating when an IP address is added.

3 years agoMerge branch '3527-dig-idna-relaxed' into 'main'
Tony Finch [Mon, 12 Sep 2022 11:09:38 +0000 (11:09 +0000)] 
Merge branch '3527-dig-idna-relaxed' into 'main'

More lenient IDNA processing in dig

Closes #3527

See merge request isc-projects/bind9!6738

3 years agoCHANGES and release note for [GL #3527]
Tony Finch [Tue, 16 Aug 2022 15:02:45 +0000 (16:02 +0100)] 
CHANGES and release note for [GL #3527]

[func] When an international domain name is not valid, DiG will
now pass it through unchanged, instead of stopping with
an error message. [GL #3527]

3 years agoMore lenient IDNA processing in dig
Tony Finch [Mon, 5 Sep 2022 14:49:49 +0000 (15:49 +0100)] 
More lenient IDNA processing in dig

If there are any problems with IDN processing, DiG will now quietly
handle the name as if IDN were disabled. This means that international
query names are rendered verbatim on the wire, and ACE names are
printed raw without conversion to UTF8.

If you want to check the syntax of international domain names,
use the `idn2` utility.

3 years agoMerge branch '3528-catz-test-faster' into 'main'
Tony Finch [Mon, 12 Sep 2022 10:31:10 +0000 (10:31 +0000)] 
Merge branch '3528-catz-test-faster' into 'main'

Speed up the `catz` system test

Closes #3528

See merge request isc-projects/bind9!6742

3 years agoSpeed up the `catz` system test
Tony Finch [Wed, 7 Sep 2022 16:57:58 +0000 (17:57 +0100)] 
Speed up the `catz` system test

Do not delay sending NOFIFY messages, and allow catalog zones to
update every second instead of every 5 seconds.

3 years agoMerge branch '3531-initialize-struct-server' into 'main'
Tony Finch [Mon, 12 Sep 2022 10:12:42 +0000 (10:12 +0000)] 
Merge branch '3531-initialize-struct-server' into 'main'

Ensure that named_server_t is properly initialized

Closes #3531

See merge request isc-projects/bind9!6755

3 years agoEnsure that named_server_t is properly initialized
Tony Finch [Fri, 9 Sep 2022 07:21:10 +0000 (08:21 +0100)] 
Ensure that named_server_t is properly initialized

There was a ubsan error reporting an invalid value for interface_auto
(a boolean value cannot be 190) because it was not initialized. To
avoid this problem happening again, ensure the whole of the server
structure is initialized to zero before setting the (relatively few)
non-zero elements.

3 years agoMerge branch '3534-fix-error-reporting-for-posix-threads-functions' into 'main'
Michał Kępień [Fri, 9 Sep 2022 18:28:07 +0000 (18:28 +0000)] 
Merge branch '3534-fix-error-reporting-for-posix-threads-functions' into 'main'

Fix error reporting for POSIX Threads functions

See merge request isc-projects/bind9!6756

3 years agoFix error reporting for POSIX Threads functions
Michał Kępień [Fri, 9 Sep 2022 18:25:47 +0000 (20:25 +0200)] 
Fix error reporting for POSIX Threads functions

Commit 3608abc8fa6a33046e1d34a0789cf7c9547f09ad inadvertently carried
over a mistake in logging pthread_cond_init() errors to the
ERRNO_CHECK() preprocessor macro: instead of passing the value returned
by a given pthread_*() function to strerror_r(), ERRNO_CHECK() passes
the errno variable to strerror_r().  This causes bogus error reports
because POSIX Threads API functions do not set the errno variable.

Fix by passing the value returned by a given pthread_*() function
instead of the errno variable to strerror_r().  Since this change makes
the name of the affected macro (ERRNO_CHECK()) confusing, rename the
latter to PTHREADS_RUNTIME_CHECK().  Also log the integer error value
returned by a given pthread_*() function verbatim to rule out any
further confusion in runtime error reporting.

3 years agoMerge branch 'michal/set-up-version-and-release-notes-for-bind-9.19.6' into 'main'
Michał Kępień [Fri, 9 Sep 2022 18:23:08 +0000 (18:23 +0000)] 
Merge branch 'michal/set-up-version-and-release-notes-for-bind-9.19.6' into 'main'

Set up version and release notes for BIND 9.19.6

See merge request isc-projects/bind9!6758

3 years agoSet up release notes for BIND 9.19.6
Michał Kępień [Fri, 9 Sep 2022 17:56:43 +0000 (19:56 +0200)] 
Set up release notes for BIND 9.19.6

3 years agoUpdate BIND version to 9.19.6-dev
Michał Kępień [Fri, 9 Sep 2022 17:56:43 +0000 (19:56 +0200)] 
Update BIND version to 9.19.6-dev

3 years agoUpdate BIND version for release v9.19.5
Michał Kępień [Thu, 8 Sep 2022 12:00:21 +0000 (14:00 +0200)] 
Update BIND version for release

3 years agoAdd a CHANGES marker
Michał Kępień [Thu, 8 Sep 2022 12:00:21 +0000 (14:00 +0200)] 
Add a CHANGES marker

3 years agoMerge branch 'michal/prepare-documentation-for-bind-9.19.5' into 'security-main'
Michał Kępień [Thu, 8 Sep 2022 11:58:18 +0000 (11:58 +0000)] 
Merge branch 'michal/prepare-documentation-for-bind-9.19.5' into 'security-main'

Prepare documentation for BIND 9.19.5

See merge request isc-private/bind9!458

3 years agoAdd release note for GL #3410
Michał Kępień [Thu, 8 Sep 2022 10:45:56 +0000 (12:45 +0200)] 
Add release note for GL #3410

3 years agoTweak and reword release notes
Michał Kępień [Thu, 8 Sep 2022 10:45:56 +0000 (12:45 +0200)] 
Tweak and reword release notes

3 years agoPrepare release notes for BIND 9.19.5
Michał Kępień [Thu, 8 Sep 2022 10:45:56 +0000 (12:45 +0200)] 
Prepare release notes for BIND 9.19.5

3 years agoMerge branch '3487-eddsa-verify-leak' into 'security-main'
Michał Kępień [Thu, 8 Sep 2022 09:29:18 +0000 (09:29 +0000)] 
Merge branch '3487-eddsa-verify-leak' into 'security-main'

[CVE-2022-38178] eddsa verify leak

See merge request isc-private/bind9!422

3 years agoAdd release note for [GL #3487]
Mark Andrews [Fri, 12 Aug 2022 00:33:04 +0000 (10:33 +1000)] 
Add release note for [GL #3487]

3 years agoAdd CHANGES note for [GL #3487]
Mark Andrews [Fri, 12 Aug 2022 00:31:59 +0000 (10:31 +1000)] 
Add CHANGES note for [GL #3487]

3 years agoFree ctx on invalid siglen
Mark Andrews [Thu, 11 Aug 2022 05:28:13 +0000 (15:28 +1000)] 
Free ctx on invalid siglen

3 years agoMerge branch '3517-serve-stale-client-timeout-0-cname-crash' into 'security-main'
Michał Kępień [Thu, 8 Sep 2022 09:25:51 +0000 (09:25 +0000)] 
Merge branch '3517-serve-stale-client-timeout-0-cname-crash' into 'security-main'

[CVE-2022-3080] Fix serve-stale-client-timeout 0 CNAME crash

See merge request isc-private/bind9!443

3 years agoAdd release notes for #3517
Matthijs Mekking [Mon, 5 Sep 2022 09:34:57 +0000 (11:34 +0200)] 
Add release notes for #3517

3 years agoAdd CHANGES entry for 3517
Matthijs Mekking [Mon, 5 Sep 2022 09:32:59 +0000 (11:32 +0200)] 
Add CHANGES entry for 3517

3 years agoOnly refresh RRset once
Matthijs Mekking [Fri, 2 Sep 2022 14:50:39 +0000 (16:50 +0200)] 
Only refresh RRset once

Don't attempt to resolve DNS responses for intermediate results. This
may create multiple refreshes and can cause a crash.

One scenario is where for the query there is a CNAME and canonical
answer in cache that are both stale. This will trigger a refresh of
the RRsets because we encountered stale data and we prioritized it over
the lookup. It will trigger a refresh of both RRsets. When we start
recursing, it will detect a recursion loop because the recursion
parameters will eventually be the same. In 'dns_resolver_destroyfetch'
the sanity check fails, one of the callers did not get its event back
before trying to destroy the fetch.

Move the call to 'query_refresh_rrset' to 'ns_query_done', so that it
is only called once per client request.

Another scenario is where for the query there is a stale CNAME in the
cache that points to a record that is also in cache but not stale. This
will trigger a refresh of the RRset (because we encountered stale data
and we prioritized it over the lookup).

We mark RRsets that we add to the message with
DNS_RDATASETATTR_STALE_ADDED to prevent adding a duplicate RRset when
a stale lookup and a normal lookup conflict with each other. However,
the other non-stale RRset when following a CNAME chain will be added to
the message without setting that attribute, because it is not stale.

This is a variant of the bug in #2594. The fix covered the same crash
but for stale-answer-client-timeout > 0.

Fix this by clearing all RRsets from the message before refreshing.
This requires the refresh to happen after the query is send back to
the client.

3 years agoMerge branch '3491-security-fix-openssl-dh-memory-leaks' into 'security-main'
Michał Kępień [Thu, 8 Sep 2022 09:22:32 +0000 (09:22 +0000)] 
Merge branch '3491-security-fix-openssl-dh-memory-leaks' into 'security-main'

[CVE-2022-2906] Fix memory leaks in DH code

See merge request isc-private/bind9!426

3 years agoAdd release note for [GL #3491]
Aram Sargsyan [Thu, 18 Aug 2022 09:28:03 +0000 (09:28 +0000)] 
Add release note for [GL #3491]

3 years agoAdd CHANGES note for [GL #3491]
Aram Sargsyan [Thu, 18 Aug 2022 09:20:21 +0000 (09:20 +0000)] 
Add CHANGES note for [GL #3491]

3 years agoFix memory leaks in DH code
Aram Sargsyan [Thu, 18 Aug 2022 08:59:09 +0000 (08:59 +0000)] 
Fix memory leaks in DH code

When used with OpenSSL v3.0.0+, the `openssldh_compare()`,
`openssldh_paramcompare()`, and `openssldh_todns()` functions
fail to cleanup the used memory on some error paths.

Use `DST_RET` instead of `return`, when there is memory to be
released before returning from the functions.

3 years agoMerge branch '3493-confidential-compression-buffer-reuse' into 'security-main'
Michał Kępień [Thu, 8 Sep 2022 09:18:27 +0000 (09:18 +0000)] 
Merge branch '3493-confidential-compression-buffer-reuse' into 'security-main'

[CVE-2022-2881] compression buffer was not reused correctly

See merge request isc-private/bind9!425

3 years agoCHANGES and release notes for CVE-2022-2881 [GL #3493]
Evan Hunt [Tue, 16 Aug 2022 23:26:02 +0000 (16:26 -0700)] 
CHANGES and release notes for CVE-2022-2881 [GL #3493]

3 years agocompression buffer was not reused correctly
Evan Hunt [Tue, 16 Aug 2022 23:26:02 +0000 (16:26 -0700)] 
compression buffer was not reused correctly

when the compression buffer was reused for multiple statistics
requests, responses could grow beyond the correct size. this was
because the buffer was not cleared before reuse; compressed data
was still written to the beginning of the buffer, but then the size
of used region was increased by the amount written, rather than set
to the amount written. this caused responses to grow larger and
larger, potentially reading past the end of the allocated buffer.

3 years agoMerge branch '3394-security-cve-2022-2795-mitigation' into 'security-main'
Michał Kępień [Thu, 8 Sep 2022 09:13:53 +0000 (09:13 +0000)] 
Merge branch '3394-security-cve-2022-2795-mitigation' into 'security-main'

[CVE-2022-2795] Bound the amount of work performed for delegations

See merge request isc-private/bind9!431

3 years agoAdd release note for GL #3394
Michał Kępień [Thu, 8 Sep 2022 09:11:30 +0000 (11:11 +0200)] 
Add release note for GL #3394

3 years agoAdd CHANGES entry for GL #3394
Michał Kępień [Thu, 8 Sep 2022 09:11:30 +0000 (11:11 +0200)] 
Add CHANGES entry for GL #3394

3 years agoBound the amount of work performed for delegations
Michał Kępień [Thu, 8 Sep 2022 09:11:30 +0000 (11:11 +0200)] 
Bound the amount of work performed for delegations

Limit the amount of database lookups that can be triggered in
fctx_getaddresses() (i.e. when determining the name server addresses to
query next) by setting a hard limit on the number of NS RRs processed
for any delegation encountered.  Without any limit in place, named can
be forced to perform large amounts of database lookups per each query
received, which severely impacts resolver performance.

The limit used (20) is an arbitrary value that is considered to be big
enough for any sane DNS delegation.

3 years agoMerge branch 'michal/add-placeholder-entries-to-CHANGES' into 'main'
Michał Kępień [Thu, 8 Sep 2022 08:55:46 +0000 (08:55 +0000)] 
Merge branch 'michal/add-placeholder-entries-to-CHANGES' into 'main'

Add placeholder entries to CHANGES

See merge request isc-projects/bind9!6750

3 years agoAdd placeholder entries to CHANGES
Michał Kępień [Thu, 8 Sep 2022 08:42:01 +0000 (10:42 +0200)] 
Add placeholder entries to CHANGES

Add placeholders for the following issues:

  - [GL #3394]
  - [GL #3487]
  - [GL #3491]
  - [GL #3493]
  - [GL #3517]

3 years agoMerge branch '3459-rrl-wildcard-handling' into 'main'
Michał Kępień [Thu, 8 Sep 2022 07:35:43 +0000 (07:35 +0000)] 
Merge branch '3459-rrl-wildcard-handling' into 'main'

Make RRL code treat all QNAMEs subject to wildcard processing as the same name

Closes #3459

See merge request isc-projects/bind9!6744

3 years agoAdd CHANGES and release notes for [GL #3459]
Aram Sargsyan [Mon, 25 Jul 2022 14:59:41 +0000 (14:59 +0000)] 
Add CHANGES and release notes for [GL #3459]

3 years agoDocument RRL processing for wildcard names
Aram Sargsyan [Mon, 25 Jul 2022 14:13:28 +0000 (14:13 +0000)] 
Document RRL processing for wildcard names

All valid wildcard domain names are interpreted as the zone's origin
name concatenated to the "*" name.

3 years agoFix RRL responses-per-second bypass using wildcard names
Aram Sargsyan [Mon, 25 Jul 2022 13:55:03 +0000 (13:55 +0000)] 
Fix RRL responses-per-second bypass using wildcard names

It is possible to bypass Response Rate Limiting (RRL)
`responses-per-second` limitation using specially crafted wildcard
names, because the current implementation, when encountering a found
DNS name generated from a wildcard record, just strips the leftmost
label of the name before making a key for the bucket.

While that technique helps with limiting random requests like
<random>.example.com (because all those requests will be accounted
as belonging to a bucket constructed from "example.com" name), it does
not help with random names like subdomain.<random>.example.com.

The best solution would have been to strip not just the leftmost
label, but as many labels as necessary until reaching the suffix part
of the wildcard record from which the found name is generated, however,
we do not have that information readily available in the context of RRL
processing code.

Fix the issue by interpreting all valid wildcard domain names as
the zone's origin name concatenated to the "*" name, so they all will
be put into the same bucket.

3 years agoMerge branch 'matthijs-fix-intermittent-inline-system-test-failure' into 'main'
Matthijs Mekking [Wed, 7 Sep 2022 15:10:56 +0000 (15:10 +0000)] 
Merge branch 'matthijs-fix-intermittent-inline-system-test-failure' into 'main'

Fix intermittent inline system test failure

See merge request isc-projects/bind9!6708

3 years agoUpdate inline system test, zone 'retransfer3.'
Matthijs Mekking [Tue, 30 Aug 2022 08:04:16 +0000 (10:04 +0200)] 
Update inline system test, zone 'retransfer3.'

The zone 'retransfer3.' tests whether zones that 'rndc signing
-nsec3param' requests are queued even if the zone is not loaded.

The test assumes that if 'rndc signing -list' shows that the zone is
done signing with two keys, and there are no NSEC3 chains pending, the
zone is done handling the '-nsec3param' queued requests. However, it
is possible that the 'rndc signing -list' command is received before
the corresponding privatetype records are added to the zone (the records
that are used to retrieve the signing status with 'rndc signing').

This is what happens in test failure
https://gitlab.isc.org/isc-projects/bind9/-/jobs/2722752.

The 'rndc signing -list retransfer3' is thus an unreliable check.
It is simpler to just remove the check and wait for a certain amount
of time and check whether ns3 has re-signed the zone using NSEC3.

3 years agoMerge branch '3508-fix-building-without-doh-support' into 'main'
Michał Kępień [Wed, 7 Sep 2022 11:21:57 +0000 (11:21 +0000)] 
Merge branch '3508-fix-building-without-doh-support' into 'main'

Fix building without DoH support

Closes #3508

See merge request isc-projects/bind9!6737

3 years agoFix building with --disable-doh
Michał Kępień [Wed, 7 Sep 2022 10:50:08 +0000 (12:50 +0200)] 
Fix building with --disable-doh

Commit b69e783164cd50e3306364668558e460617ee8fc inadvertently caused
builds using the --disable-doh switch to fail, by putting the
declaration of the isc__nm_async_settlsctx() function inside an #ifdef
block that is only evaluated when DNS-over-HTTPS support is enabled.
This results in the following compilation errors being triggered:

    netmgr/netmgr.c:2657:1: error: no previous prototype for 'isc__nm_async_settlsctx' [-Werror=missing-prototypes]
     2657 | isc__nm_async_settlsctx(isc__networker_t *worker, isc__netievent_t *ev0) {
          | ^~~~~~~~~~~~~~~~~~~~~~~

Fix by making the declaration of the isc__nm_async_settlsctx() function
in lib/isc/netmgr/netmgr-int.h visible regardless of whether
DNS-over-HTTPS support is enabled or not.

3 years agoTest the --disable-doh switch in GitLab CI
Michał Kępień [Wed, 7 Sep 2022 10:50:08 +0000 (12:50 +0200)] 
Test the --disable-doh switch in GitLab CI

Use the --disable-doh switch for all Ubuntu 22.04 builds in GitLab CI to
immediately flag any code changes that would break such builds.

3 years agoMerge branch 'each-interface-magic' into 'main'
Evan Hunt [Wed, 7 Sep 2022 04:47:09 +0000 (04:47 +0000)] 
Merge branch 'each-interface-magic' into 'main'

when creating an interface, set magic before linking

See merge request isc-projects/bind9!6735

3 years agowhen creating an interface, set magic before linking
Evan Hunt [Wed, 7 Sep 2022 00:12:14 +0000 (17:12 -0700)] 
when creating an interface, set magic before linking

set the magic number in a newly-created interface object
before appending it to mgr->interfaces in order to prevent
a possible assertion.

3 years agoMerge branch '3364-various-coverity-issues-after-dns_message_gettemp-cleanup' into...
Mark Andrews [Tue, 6 Sep 2022 15:25:39 +0000 (15:25 +0000)] 
Merge branch '3364-various-coverity-issues-after-dns_message_gettemp-cleanup' into 'main'

Resolve "Various Coverity issues after dns_message_gettemp* cleanup"

Closes #3364

See merge request isc-projects/bind9!6588

3 years agoRemove dead code
Mark Andrews [Mon, 18 Jul 2022 08:00:30 +0000 (18:00 +1000)] 
Remove dead code

    *** CID 352817:  Control flow issues  (DEADCODE) /lib/ns/xfrout.c: 1568 in sendstream()
    1562
    1563      /* Advance lasttsig to be the last TSIG generated */
    1564      CHECK(dns_message_getquerytsig(msg, xfr->mctx, &xfr->lasttsig));
    1565
    1566     failure:
    1567      if (msgname != NULL) {
    >>>     CID 352817:  Control flow issues  (DEADCODE)
    >>>     Execution cannot reach this statement: "if (msgrds != NULL) {
      if ...".
    1568      if (msgrds != NULL) {
    1569      if (dns_rdataset_isassociated(msgrds)) {
    1570      dns_rdataset_disassociate(msgrds);
    1571      }
    1572      dns_message_puttemprdataset(msg, &msgrds);
    1573      }

3 years agoRemove dead code
Mark Andrews [Mon, 18 Jul 2022 07:39:12 +0000 (17:39 +1000)] 
Remove dead code

    *** CID 352816:  Control flow issues  (DEADCODE) /lib/ns/query.c: 8443 in query_dns64()
    8437     cleanup:
    8438      if (buffer != NULL) {
    8439      isc_buffer_free(&buffer);
    8440      }
    8441
    8442      if (dns64_rdata != NULL) {
    >>>     CID 352816:  Control flow issues  (DEADCODE)
    >>>     Execution cannot reach this statement: "dns_message_puttemprdata(cl...".
    8443      dns_message_puttemprdata(client->message, &dns64_rdata);
    8444      }
    8445
    8446      if (dns64_rdataset != NULL) {
    8447      dns_message_puttemprdataset(client->message, &dns64_rdataset);
    8448      }

3 years agoRemove dead code
Mark Andrews [Mon, 18 Jul 2022 07:34:30 +0000 (17:34 +1000)] 
Remove dead code

    *** CID 352812:  Control flow issues  (DEADCODE) /lib/ns/query.c: 8584 in query_filter64()
    8578     cleanup:
    8579      if (buffer != NULL) {
    8580      isc_buffer_free(&buffer);
    8581      }
    8582
    8583      if (myrdata != NULL) {
    >>>     CID 352812:  Control flow issues  (DEADCODE)
    >>>     Execution cannot reach this statement: "dns_message_puttemprdata(cl...".
    8584      dns_message_puttemprdata(client->message, &myrdata);
    8585      }
    8586
    8587      if (myrdataset != NULL) {
    8588      dns_message_puttemprdataset(client->message, &myrdataset);
    8589      }

3 years agoSilence REVERSE_INULL
Mark Andrews [Mon, 18 Jul 2022 07:21:25 +0000 (17:21 +1000)] 
Silence REVERSE_INULL

Remove unnecessary != NULL checks

    *** CID 352809:  Null pointer dereferences  (REVERSE_INULL) /lib/dns/message.c: 4654 in dns_message_buildopt()
    4648      if (rdata != NULL) {
    4649      dns_message_puttemprdata(message, &rdata);
    4650      }
    4651      if (rdataset != NULL) {
    4652      dns_message_puttemprdataset(message, &rdataset);
    4653      }
    >>>     CID 352809:  Null pointer dereferences  (REVERSE_INULL)
    >>>     Null-checking "rdatalist" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
    4654      if (rdatalist != NULL) {
    4655      dns_message_puttemprdatalist(message, &rdatalist);
    4656      }
    4657      return (result);
    4658     }
    4659

3 years agoRemove dead code in xfrin.c
Mark Andrews [Mon, 18 Jul 2022 06:42:00 +0000 (16:42 +1000)] 
Remove dead code in xfrin.c

also removed unnecessary 'msg != NULL' check

   *** CID 352815:  Control flow issues  (DEADCODE) /lib/dns/xfrin.c: 1363 in xfrin_send_request()
   1357      isc_nmhandle_attach(send_xfr->handle, &xfr->sendhandle);
   1358      isc_refcount_increment0(&send_xfr->sends);
   1359      isc_nm_send(xfr->handle, &region, xfrin_send_done, send_xfr);
   1360
   1361     failure:
   1362      if (qname != NULL) {
   >>>     CID 352815:  Control flow issues  (DEADCODE)
   >>>     Execution cannot reach this statement: "dns_message_puttempname(msg...".
   1363      dns_message_puttempname(msg, &qname);
   1364      }
   1365      if (qrdataset != NULL) {
   1366      dns_message_puttemprdataset(msg, &qrdataset);
   1367      }
   1368      if (msg != NULL) {

   *** CID 352819:  Control flow issues  (DEADCODE) /lib/dns/xfrin.c: 1366 in xfrin_send_request()
   1360
   1361     failure:
   1362      if (qname != NULL) {
   1363      dns_message_puttempname(msg, &qname);
   1364      }
   1365      if (qrdataset != NULL) {
   >>>     CID 352819:  Control flow issues  (DEADCODE)
   >>>     Execution cannot reach this statement: "dns_message_puttemprdataset...".
   1366      dns_message_puttemprdataset(msg, &qrdataset);
   1367      }
   1368      if (msg != NULL) {
   1369      dns_message_detach(&msg);
   1370      }
   1371      if (soatuple != NULL) {

3 years agoMerge branch '3518-libxml2-deprecated-functions' into 'main'
Arаm Sаrgsyаn [Tue, 6 Sep 2022 09:42:01 +0000 (09:42 +0000)] 
Merge branch '3518-libxml2-deprecated-functions' into 'main'

Do not use libxml2 deprecated functions

Closes #3518

See merge request isc-projects/bind9!6727

3 years agoAdd CHANGES note for [GL #3518]
Aram Sargsyan [Mon, 5 Sep 2022 10:01:33 +0000 (10:01 +0000)] 
Add CHANGES note for [GL #3518]