]> git.ipfire.org Git - thirdparty/bind9.git/log
thirdparty/bind9.git
4 years agoDispatch API simplification
Evan Hunt [Thu, 17 Dec 2020 08:43:00 +0000 (00:43 -0800)] 
Dispatch API simplification

- Many dispatch attributes can be set implicitly instead of being passed
  in. we can infer whether to set DNS_DISPATCHATTR_TCP or _UDP from
  whether we're calling dns_dispatch_createtcp() or _createudp().  we
  can also infer DNS_DISPATCHATTR_IPV4 or _IPV6 from the addresses or
  the socket that were passed in.

- We no longer use dup'd sockets in UDP dispatches, so the 'dup_socket'
  parameter has been removed from dns_dispatch_createudp(), along with
  the code implementing it. also removed isc_socket_dup() since it no
  longer has any callers.

- The 'buffersize' parameter was ignored and has now been removed;
  buffersize is now fixed at 4096.

- Maxbuffers and maxrequests don't need to be passed in on every call to
  dns_dispatch_createtcp() and _createudp().

  In all current uses, the value for mgr->maxbuffers will either be
  raised once from its default of 20000 to 32768, or else left
  alone. (passing in a value lower than 20000 does not lower it.) there
  isn't enough difference between these values for there to be any need
  to configure this.

  The value for disp->maxrequests controls both the quota of concurrent
  requests for a dispatch and also the size of the dispatch socket
  memory pool. it's not clear that this quota is necessary at all. the
  memory pool size currently starts at 32768, but is sometimes lowered
  to 4096, which is definitely unnecessary.

  This commit sets both values permanently to 32768.

- Previously TCP dispatches allocated their own separate QID table,
  which didn't incorporate a port table. this commit removes
  per-dispatch QID tables and shares the same table between all
  dispatches. since dispatches are created for each TCP socket, this may
  speed up the dispatch allocation process. there may be a slight
  increase in lock contention since all dispatches are sharing a single
  QID table, but since TCP sockets are used less often than UDP
  sockets (which were already sharing a QID table), it should not be a
  substantial change.

- The dispatch port table was being used to determine whether a port was
  already in use; if so, then a UDP socket would be bound with
  REUSEADDR. this commit removes the port table, and always binds UDP
  sockets that way.

4 years agoRemove DNS_DISPATCHATTR_MAKEQUERY
Evan Hunt [Thu, 17 Dec 2020 07:33:42 +0000 (23:33 -0800)] 
Remove DNS_DISPATCHATTR_MAKEQUERY

This attribute was set but was no longer being used.

4 years agoRemove support for shared UDP dispatch sockets
Evan Hunt [Wed, 16 Dec 2020 09:32:06 +0000 (01:32 -0800)] 
Remove support for shared UDP dispatch sockets

Currently the netmgr doesn't support unconnected, shared UDP sockets, so
there's no reason to retain that functionality in the dispatcher prior
to porting to the netmgr.

In this commit, the DNS_DISPATCHATTR_EXCLUSIVE attribute has been
removed as it is now non-optional; UDP dispatches are alwasy exclusive.
Code implementing non-exclusive UDP dispatches has been removed.
dns_dispatch_getentrysocket() now always returns the dispsocket for UDP
dispatches and the dispatch socket for TCP dispatches.

There is no longer any need to search for existing dispatches from
dns_dispatch_getudp(), so the 'mask' option has been removed, and the
function renamed to the more descriptive dns_dispatch_createudp().

4 years agoGeneral code refactoring
Evan Hunt [Thu, 10 Dec 2020 03:44:41 +0000 (19:44 -0800)] 
General code refactoring

- style cleanup
- removed NULL checks in places where they are not currently needed
- use isc_refcount for dispatch reference counting
- revised code flow for readability
- remove some #ifdefs that are no longer relevant
- remove unused struct members
- removed unnecessary function parameters
- use C99 struct initialization

4 years agoMake sharing of pending TCP dispatches nonoptional
Evan Hunt [Fri, 11 Dec 2020 23:20:33 +0000 (15:20 -0800)] 
Make sharing of pending TCP dispatches nonoptional

The DNS_REQUESTOPT_SHARE flag was added when client-side pipelining of
TCP queries was implemented. there was no need to make it optional;
forcing it to be in effect for all requests simplfiies the code.

4 years agoSimplify dns_dispatchmgr_create with fixed buffersize
Evan Hunt [Wed, 9 Dec 2020 23:45:13 +0000 (15:45 -0800)] 
Simplify dns_dispatchmgr_create with fixed buffersize

- UDP buffersize is now established when creating dispatch manager
  and is always set to 4096.

- Set up the default port range in dispatchmgr before setting the magic
  number.

- Magic is not set until dispatchmgr is fully created.

4 years agoRemove some DNS_DISPATCHATTR flags
Evan Hunt [Wed, 9 Dec 2020 21:00:25 +0000 (13:00 -0800)] 
Remove some DNS_DISPATCHATTR flags

- DNS_DISPATCHATTR_CANREUSE was never set. the code that implements it
  has been removed.

- DNS_DISPATCHOPT_FIXEDID and DNS_DISPATCHATTR_FIXEDID were both
  defined, but only the DISPATCHOPT was ever set; it appears the
  DISPATCHATTR was added accidentally.

- DNS_DISPATCHATTR_NOLISTEN was set but never used.

4 years agoRemove unused code in dispatch.c
Evan Hunt [Wed, 9 Dec 2020 20:52:31 +0000 (12:52 -0800)] 
Remove unused code in dispatch.c

Some routines in dispatch.c are obsolete and unused; clean them up
before porting to netmgr.

4 years agoMerge branch '2913-release-checklist-for-bind-is-missing-a-step-for-the-official... 968/merge
Vicky Risk [Fri, 1 Oct 2021 15:41:23 +0000 (15:41 +0000)] 
Merge branch '2913-release-checklist-for-bind-is-missing-a-step-for-the-official-docker-image' into 'main'

Resolve "Release checklist for BIND + a step for the official docker image"

Closes #2913

See merge request isc-projects/bind9!5436

4 years agoUpdate Release.md to break out steps required to build and update packages
Vicky Risk [Wed, 22 Sep 2021 16:05:24 +0000 (16:05 +0000)] 
Update Release.md to break out steps required to build and update packages

4 years agoMerge branch 'artem/tls-protocols-conf' into 'main'
Artem Boldariev [Fri, 1 Oct 2021 13:28:14 +0000 (13:28 +0000)] 
Merge branch 'artem/tls-protocols-conf' into 'main'

Resolve #2795, #2796: implement TLS configuration options to make it possible to specify supported TLS versions and implement perfect forward secrecy for DoH and DoT

Closes #2796 and #2795

See merge request isc-projects/bind9!5444

4 years agoProvide an example of forward secrecy enabled TLS configuration
Artem Boldariev [Thu, 30 Sep 2021 08:31:01 +0000 (11:31 +0300)] 
Provide an example of forward secrecy enabled TLS configuration

This commit adds and example of a perfect forward secrecy enabled TLS
configuration intended to be used as a starting point.

4 years agoModify release notes [GL #2796]
Artem Boldariev [Tue, 28 Sep 2021 10:13:47 +0000 (13:13 +0300)] 
Modify release notes [GL #2796]

Mention the new "tls" clause options in the release notes.

4 years agoModify release notes [GL #2795]
Artem Boldariev [Tue, 28 Sep 2021 09:59:13 +0000 (12:59 +0300)] 
Modify release notes [GL #2795]

Mention that it is now possible to specify supported TLS protocol
versions.

4 years agoModify CHANGES [GL #2796]
Artem Boldariev [Tue, 28 Sep 2021 09:49:25 +0000 (12:49 +0300)] 
Modify CHANGES [GL #2796]

Mention the new "tls" options in the CHANGES file.

4 years agoModify CHANGES [GL #2795]
Artem Boldariev [Tue, 28 Sep 2021 09:23:20 +0000 (12:23 +0300)] 
Modify CHANGES  [GL #2795]

Mention in the CHANGES file that supported TLS versions can be
specified in the configuration file.

4 years agoMention that "tls" options defaults are outside of our control
Artem Boldariev [Thu, 23 Sep 2021 15:07:42 +0000 (18:07 +0300)] 
Mention that "tls" options defaults are outside of our control

We have to mention that every option within a "tls" clause has
defaults out of our control as some platforms have means for defining
encryption policies globally for any application on the system.

In order to comply with these policies, we have not to modify TLS
contexts settings, unless we have to do so according to the options
specified within "tls" clauses.

4 years agoAdd "session-tickets" options to the "tls" clause
Artem Boldariev [Tue, 21 Sep 2021 11:09:56 +0000 (14:09 +0300)] 
Add "session-tickets" options to the "tls" clause

This commit adds the ability to enable or disable stateless TLS
session resumption tickets (see RFC5077). Having this ability is
twofold.

Firstly, these tickets are encrypted by the server, and the algorithm
might be weaker than the algorithm negotiated during the TLS session
establishment (it is in general the case for TLSv1.2, but the generic
principle applies to TLSv1.3 as well, despite it having better ciphers
for session tickets). Thus, they might compromise Perfect Forward
Secrecy.

Secondly, disabling it might be necessary if the same TLS key/cert
pair is supposed to be used by multiple servers to achieve, e.g., load
balancing because the session ticket by default gets generated in
runtime, while to achieve successful session resumption ability, in
this case, would have required using a shared key.

The proper alternative to having the ability to disable stateless TLS
session resumption tickets is to implement a proper session tickets
key rollover mechanism so that key rotation might be performed
often (e.g. once an hour) to not compromise forward secrecy while
retaining the associated performance benefits. That is much more work,
though. On the other hand, having the ability to disable session
tickets allows having a deployable configuration right now in the
cases when either forward secrecy is wanted or sharing the TLS
key/cert pair between multiple servers is needed (or both).

4 years agoAdd "prefer-server-ciphers" options to the "tls" clause
Artem Boldariev [Mon, 20 Sep 2021 13:53:27 +0000 (16:53 +0300)] 
Add "prefer-server-ciphers" options to the "tls" clause

This commit adds support for enforcing the preference of server
ciphers over the client ones. This way, the server attains control
over the ciphers priority and, thus, can choose more strong cyphers
when a client prioritises less strong ciphers over the more strong
ones, which is beneficial when trying to achieve Perfect Forward
Secrecy.

4 years agoAdd "ciphers" options to the "tls" clause
Artem Boldariev [Mon, 20 Sep 2021 11:25:59 +0000 (14:25 +0300)] 
Add "ciphers" options to the "tls" clause

This commit adds support for setting TLS cipher list string in the
format specified in the OpenSSL
documentation (https://www.openssl.org/docs/man1.1.1/man1/ciphers.html).

The syntax of the cipher list is verified so that specifying the wrong
string will prevent the configuration from being loaded.

4 years agoDH-parameters loading support
Artem Boldariev [Thu, 16 Sep 2021 11:48:30 +0000 (14:48 +0300)] 
DH-parameters loading support

This commit adds support for loading DH-parameters (Diffie-Hellman
parameters) via the new "dhparam-file" option within "tls" clause. In
particular, Diffie-Hellman parameters are needed to enable the range
of forward-secrecy enabled cyphers for TLSv1.2, which are getting
silently disabled otherwise.

4 years agoAdd "protocols" options to the "tls" clause
Artem Boldariev [Mon, 13 Sep 2021 12:39:36 +0000 (15:39 +0300)] 
Add "protocols" options to the "tls" clause

This commit adds the ability to specify allowed TLS protocols versions
within the "tls" clause. If an unsupported TLS protocol version is
specified in a file, the configuration file will not pass
verification.

Also, this commit adds strict checks for "tls" clauses verification,
in particular:

- it ensures that loading configuration files containing duplicated
"tls" clauses is not allowed;

- it ensures that loading configuration files containing "tls" clauses
missing "cert-file" or "key-file" is not allowed;

- it ensures that loading configuration files containing "tls" clauses
named as "ephemeral" or "none" is not allowed.

4 years agoTLS: set some common options both for client and server contexts
Artem Boldariev [Mon, 13 Sep 2021 11:00:35 +0000 (14:00 +0300)] 
TLS: set some common options both for client and server contexts

This commit makes the TLS context manipulation code set some of the
common protocol versions regardless of the OpenSSL version in use.

4 years agoMerge branch '2308-catz-reload-when-missing-a-zone' into 'main'
Arаm Sаrgsyаn [Thu, 30 Sep 2021 19:52:00 +0000 (19:52 +0000)] 
Merge branch '2308-catz-reload-when-missing-a-zone' into 'main'

Handle a missing zone when reloading a catalog zone

Closes #2308

See merge request isc-projects/bind9!5442

4 years agoAdd CHANGES and release notes for [GL #2308]
Aram Sargsyan [Fri, 24 Sep 2021 18:18:27 +0000 (18:18 +0000)] 
Add CHANGES and release notes for [GL #2308]

4 years agoHandle a missing zone when reloading a catalog zone
Aram Sargsyan [Fri, 24 Sep 2021 17:42:12 +0000 (17:42 +0000)] 
Handle a missing zone when reloading a catalog zone

Previously a missing/deleted zone which was referenced by a catalog
zone was causing a crash when doing a reload.

This commit will make `named` to ignore the fact that the zone is
missing, and make sure to restore it later on.

4 years agoMerge branch '2921-replace-xmalloc_true-with-own-assertions' into 'main'
Ondřej Surý [Thu, 30 Sep 2021 13:52:01 +0000 (13:52 +0000)] 
Merge branch '2921-replace-xmalloc_true-with-own-assertions' into 'main'

Use assertions to check for failed allocations

See merge request isc-projects/bind9!5449

4 years agoUse assertions to check for failed allocations
Ondřej Surý [Wed, 29 Sep 2021 08:58:58 +0000 (10:58 +0200)] 
Use assertions to check for failed allocations

It was discovered that named could crash due to a segmentation fault
when jemalloc was in use and memory allocation failed.  This was not
intended to happen as jemalloc's "xmalloc" option was set to "true" in
the "malloc_conf" configuration variable.  However, that variable was
only set after jemalloc was already done with parsing it, which
effectively caused setting that variable to have no effect.

While investigating this issue, it was also discovered that enabling the
"xmalloc" option makes jemalloc use a slow processing path, decreasing
its performance by about 25%. [1]

Additionally, further testing (carried out after fixing the way
"malloc_conf" was set) revealed that the non-default configuration
options do not have any measurable effect on either authoritative or
recursive DNS server performance.

Replace code setting various jemalloc options to non-default values with
assertion checks of mallocx()/rallocx() return values.

[1] https://github.com/jemalloc/jemalloc/pull/523

4 years agoMerge branch '2924-fix-heap-user-after-free-when-checking-for-http-duplicates' into...
Artem Boldariev [Thu, 30 Sep 2021 09:16:43 +0000 (09:16 +0000)] 
Merge branch '2924-fix-heap-user-after-free-when-checking-for-http-duplicates' into 'main'

Fix heap use after free when checking for "http" duplicates

Closes #2924

See merge request isc-projects/bind9!5452

4 years agoModify CHANGES [GL #2924]
Artem Boldariev [Wed, 29 Sep 2021 17:07:58 +0000 (20:07 +0300)] 
Modify CHANGES [GL #2924]

Mention that heap-use-after-free when checking for "http" duplicates
is fixed.

4 years agoFix heap use after free when checking for "http" duplicates
Artem Boldariev [Wed, 29 Sep 2021 15:44:20 +0000 (18:44 +0300)] 
Fix heap use after free when checking for "http" duplicates

This commit fixes heap use after free when checking BIND's
configuration files for errors with http clauses.  The old code
was unnecessarially copying the http element name and freeing
it to early.  The name is now used directly.

4 years agoMerge branch '2923-validate-doh-path-in-dig' into 'main'
Artem Boldariev [Thu, 30 Sep 2021 08:36:58 +0000 (08:36 +0000)] 
Merge branch '2923-validate-doh-path-in-dig' into 'main'

Validate HTTP path passed to dig

Closes #2923

See merge request isc-projects/bind9!5451

4 years agoModify CHANGES [GL #2923]
Artem Boldariev [Wed, 29 Sep 2021 16:39:51 +0000 (19:39 +0300)] 
Modify CHANGES [GL #2923]

Mention that the HTTP path is now validated.

4 years agoValidate HTTP path passed to dig
Artem Boldariev [Wed, 29 Sep 2021 16:37:15 +0000 (19:37 +0300)] 
Validate HTTP path passed to dig

The commit makes sure that the HTTP path passed to dig is a valid one.

4 years agoMerge branch '2908-rwlock-with-reader-and-writer-both-waiting' into 'main'
Ondřej Surý [Wed, 29 Sep 2021 15:56:35 +0000 (15:56 +0000)] 
Merge branch '2908-rwlock-with-reader-and-writer-both-waiting' into 'main'

Resolve "rwlock with reader and writer both waiting"

Closes #2908

See merge request isc-projects/bind9!5421

4 years agoAdd CHANGES note for [GL #2908]
Mark Andrews [Fri, 17 Sep 2021 02:58:40 +0000 (12:58 +1000)] 
Add CHANGES note for [GL #2908]

4 years agoPause the dbiterator before calling dns_db_find
Mark Andrews [Fri, 17 Sep 2021 02:55:07 +0000 (12:55 +1000)] 
Pause the dbiterator before calling dns_db_find

zone.c:integrity_checks() acquires a read lock while iterating the
zone database, and calls zone_check_mx() which acquires another
read lock. If another thread tries to acquire a write lock in the
meantime, it can deadlock. Calling dns_dbiterator_pause() to release
the first read lock prevents this.

4 years agoMerge branch '2911-9-16-21-regression-legacy-check-names-configuration-does-not-work...
Mark Andrews [Wed, 29 Sep 2021 09:42:54 +0000 (09:42 +0000)] 
Merge branch '2911-9-16-21-regression-legacy-check-names-configuration-does-not-work-anymore' into 'main'

Resolve "9.16.21 Regression: Legacy check-names configuration does not work anymore"

Closes #2911

See merge request isc-projects/bind9!5425

4 years agoAdd CHANGES note for [GL #2911]
Mark Andrews [Sat, 18 Sep 2021 23:11:15 +0000 (09:11 +1000)] 
Add CHANGES note for [GL #2911]

4 years agoCheck that 'check-names {secondary|slave} ignore;' works
Mark Andrews [Tue, 28 Sep 2021 23:36:02 +0000 (09:36 +1000)] 
Check that 'check-names {secondary|slave} ignore;' works

4 years agoCheck that 'check-names master ignore;' works
Mark Andrews [Sat, 18 Sep 2021 23:34:33 +0000 (09:34 +1000)] 
Check that 'check-names master ignore;' works

4 years agoFix "check-names master" and "check-names slave"
Mark Andrews [Sat, 18 Sep 2021 23:11:15 +0000 (09:11 +1000)] 
Fix "check-names master" and "check-names slave"

check for type "master" / "slave" at the same time as checking
for "primary" / "secondary" as we step through the maps.

Checking "primary" then "master" or "master" then "primary" does
not work as the synomym is not checked for to stop the search.
Similarly with "secondary" and "slave".

4 years agoMerge branch '2909-pointers-used-before-validation' into 'main'
Mark Andrews [Wed, 29 Sep 2021 01:41:25 +0000 (01:41 +0000)] 
Merge branch '2909-pointers-used-before-validation' into 'main'

Resolve "Pointers used before validation"

Closes #2909

See merge request isc-projects/bind9!5443

4 years agoAddress use before NULL check warning of obj
Mark Andrews [Tue, 28 Sep 2021 00:14:02 +0000 (10:14 +1000)] 
Address use before NULL check warning of obj

move deference of obj to after NULL check

4 years agoAddress use before NULL check warning of ievent->sock
Mark Andrews [Tue, 28 Sep 2021 00:12:31 +0000 (10:12 +1000)] 
Address use before NULL check warning of ievent->sock

Reorder REQUIRE checks to ensure ievent->sock is checked earlier

4 years agoAddress use before NULL check warning of uvreq
Mark Andrews [Tue, 28 Sep 2021 00:08:26 +0000 (10:08 +1000)] 
Address use before NULL check warning of uvreq

move dereference of uvreq until the after NULL check.

4 years agoMerge branch '2910-unknown-system-test-doesn-t-leave-forensics' into 'main'
Mark Andrews [Fri, 24 Sep 2021 03:34:18 +0000 (03:34 +0000)] 
Merge branch '2910-unknown-system-test-doesn-t-leave-forensics' into 'main'

Resolve "unknown system test doesn't leave forensics"

Closes #2910

See merge request isc-projects/bind9!5422

4 years agoPreserve dig results in case of test failure
Mark Andrews [Fri, 17 Sep 2021 04:01:07 +0000 (14:01 +1000)] 
Preserve dig results in case of test failure

4 years agoMerge branch '2917-preserve-the-contents-of-tcp-buffer' into 'main'
Ondřej Surý [Thu, 23 Sep 2021 21:21:38 +0000 (21:21 +0000)] 
Merge branch '2917-preserve-the-contents-of-tcp-buffer' into 'main'

Preserve the contents of socket buffer on realloc

Closes #2917

See merge request isc-projects/bind9!5437

4 years agoAdd CHANGES and release notes for [GL #2917]
Ondřej Surý [Wed, 22 Sep 2021 17:54:29 +0000 (19:54 +0200)] 
Add CHANGES and release notes for [GL #2917]

4 years agoPreserve the contents of socket buffer on realloc
Ondřej Surý [Wed, 22 Sep 2021 16:55:02 +0000 (18:55 +0200)] 
Preserve the contents of socket buffer on realloc

On TCPDNS/TLSDNS read callback, the socket buffer could be reallocated
if the received contents would be larger than the buffer.  The existing
code would not preserve the contents of the existing buffer which lead
to the loss of the already received data.

This commit changes the isc_mem_put()+isc_mem_get() with isc_mem_reget()
to preserve the existing contents of the socket buffer.

4 years agoMerge branch 'ondrej/introduce-isc_mem_reget' into 'main'
Ondřej Surý [Thu, 23 Sep 2021 20:35:29 +0000 (20:35 +0000)] 
Merge branch 'ondrej/introduce-isc_mem_reget' into 'main'

Add isc_mem_reget() function to realloc isc_mem_get allocations

See merge request isc-projects/bind9!5440

4 years agoAdd CHANGES note for [GL !5440]
Ondřej Surý [Thu, 23 Sep 2021 08:24:01 +0000 (10:24 +0200)] 
Add CHANGES note for [GL !5440]

4 years agoUse isc_mem_reget() to handle the internal active handle cache
Ondřej Surý [Wed, 22 Sep 2021 18:03:43 +0000 (20:03 +0200)] 
Use isc_mem_reget() to handle the internal active handle cache

The netmgr, has an internal cache for freed active handles.  This cache
was allocated using isc_mem_allocate()/isc_mem_free() API because it was
simpler to reallocate the cache when we needed to grow it.  The new
isc_mem_reget() function could be used here reducing the need to use
isc_mem_allocate() API which is tad bit slower than isc_mem_get() API.

4 years agoUse isc_mem_reget() when growing buffer dynamically
Ondřej Surý [Wed, 22 Sep 2021 18:01:20 +0000 (20:01 +0200)] 
Use isc_mem_reget() when growing buffer dynamically

Previously, we cannot use isc_mem_reallocate() for growing the buffer
dynamically, because the memory was allocated using the
isc_mem_get()/isc_mem_put() API.  With the introduction of the
isc_mem_reget() function, we can use grow/shrink the memory directly
without always moving the memory around as the allocator might have
reserved some extra space after the initial allocation.

4 years agoReturn non-NULL pointer on zero-sized allocations and reallocations
Ondřej Surý [Thu, 23 Sep 2021 19:19:25 +0000 (21:19 +0200)] 
Return non-NULL pointer on zero-sized allocations and reallocations

Previously, the zero-sized allocations would return NULL pointer and the
caller had to make sure to not dereference such pointer.  The C standard
defines the zero-sized calls to malloc() as implementation specific and
jemalloc mallocx() with zero size would be undefined behaviour.  This
complicated the code as it had to handle such cases in a special manner
in all allocator and deallocator functions.

Now, for realloc(), the situation is even more complicated.  In C
standard up to C11, the behavior would be implementation defined, and
actually some implementation would free to orig ptr and some would not.
Since C17 (via DR400) would deprecate such usage and since C23, the
behaviour would be undefined.

This commits changes helper mem_get(), mem_put() and mem_realloc()
functions to grow the zero-allocation from 0 to sizeof(void *).

This way we get a predicable behaviour that all the allocations will
always return valid pointer.

4 years agoAdd isc_mem_reget() function to realloc isc_mem_get allocations
Ondřej Surý [Wed, 22 Sep 2021 16:48:03 +0000 (18:48 +0200)] 
Add isc_mem_reget() function to realloc isc_mem_get allocations

The isc_mem_get() and isc_mem_put() functions are leaving the memory
allocation size tracking to the users of the API, while
isc_mem_allocate() and isc_mem_free() would track the sizes internally.
This allowed to have isc_mem_rellocate() to manipulate the memory
allocations by the later set, but not the former set of the functions.

This commit introduces isc_mem_reget(ctx, old_ptr, old_size, new_size)
function that operates on the memory allocations with external size
tracking completing the API.

4 years agoMerge branch 'matthijs-fix-arm-typos' into 'main'
Matthijs Mekking [Thu, 23 Sep 2021 07:52:09 +0000 (07:52 +0000)] 
Merge branch 'matthijs-fix-arm-typos' into 'main'

The s stands for security

See merge request isc-projects/bind9!5428

4 years agoRemove copy paste error on zone-max-ttl
Matthijs Mekking [Tue, 21 Sep 2021 13:22:49 +0000 (15:22 +0200)] 
Remove copy paste error on zone-max-ttl

The "zone-max-ttl" option inside a "dnssec-policy" is not used to cap
the TTLs in a zone, only yo calculate key rollover timings.

4 years agoAdd a note about salt length
Matthijs Mekking [Mon, 20 Sep 2021 13:22:53 +0000 (15:22 +0200)] 
Add a note about salt length

Apparently it is confusing that you don't specify a specific salt,
but a salt length.

4 years agoThe s stands for security
Matthijs Mekking [Mon, 20 Sep 2021 13:20:33 +0000 (15:20 +0200)] 
The s stands for security

So "hardware security modules" not "hardware service modules"

4 years agoMerge branch '2814-DLZ-drivers-additional-cleanups' into 'main'
Ondřej Surý [Tue, 21 Sep 2021 09:37:33 +0000 (09:37 +0000)] 
Merge branch '2814-DLZ-drivers-additional-cleanups' into 'main'

Remove the DLZ driver documentation

Closes #2814

See merge request isc-projects/bind9!5431

4 years agoRemove CONTRIB_DLZ traces from bin/named/main.c
Ondřej Surý [Tue, 21 Sep 2021 08:56:42 +0000 (10:56 +0200)] 
Remove CONTRIB_DLZ traces from bin/named/main.c

The named main.c had leftovers guarded by CONTRIB_DLZ macro which
has been removed.  This commit removes the dead code surrounded
by ifdef CONTRIB_DLZ.

4 years agoRemove the DLZ driver documentation
Ondřej Surý [Tue, 21 Sep 2021 08:56:05 +0000 (10:56 +0200)] 
Remove the DLZ driver documentation

Remove the last traces of static DLZ drivers from ARM.

4 years agoMerge branch 'ondrej/remove-cruft-from-contrib' into 'main'
Ondřej Surý [Mon, 20 Sep 2021 21:01:40 +0000 (21:01 +0000)] 
Merge branch 'ondrej/remove-cruft-from-contrib' into 'main'

Remove old-style DLZ drivers linked into named at compile time

Closes #2814

See merge request isc-projects/bind9!5427

4 years agoAdd CHANGES and release note for [GL #2814]
Ondřej Surý [Mon, 20 Sep 2021 11:35:10 +0000 (13:35 +0200)] 
Add CHANGES and release note for [GL #2814]

4 years agoRemove couple old and rusty scripts from contrib/
Ondřej Surý [Mon, 20 Sep 2021 11:47:19 +0000 (13:47 +0200)] 
Remove couple old and rusty scripts from contrib/

* dnssec-keyset.sh - obsoleted by dnssec-policy
* named-bootconf.sh - unmaintained script from NetBSD that would
      generate named.conf

4 years agoRemove scripts to convert KASP to old dnssec-keymgr policy
Ondřej Surý [Mon, 20 Sep 2021 10:45:46 +0000 (12:45 +0200)] 
Remove scripts to convert KASP to old dnssec-keymgr policy

The dnssec-keymgr has been replaces with dnssec-policy in the named, so
there's no need to carry the conversion script in the contrib/ anymore.

4 years agoRemove dnspriv example from the contrib directory
Ondřej Surý [Mon, 20 Sep 2021 10:44:49 +0000 (12:44 +0200)] 
Remove dnspriv example from the contrib directory

BIND 9 has now native DoH support, so there's no need to have nginx
proxy example in the contrib/ directory.

4 years agoRemove the mkdane.sh script from contrib directory
Ondřej Surý [Mon, 20 Sep 2021 10:43:29 +0000 (12:43 +0200)] 
Remove the mkdane.sh script from contrib directory

Better and maintained alternatives exists, f.e. sshfp package contains a
dane tool: https://github.com/xelerance/sshfp/

4 years agoAdd static Makefile to mysql and mysqldyn DLZ modules
Ondřej Surý [Mon, 20 Sep 2021 11:38:54 +0000 (13:38 +0200)] 
Add static Makefile to mysql and mysqldyn DLZ modules

Previously, the Makefiles for mysql and mysqldyn DLZ modules were
generated from autoconf to get CFLAGS and LIBS for MariaDB or MySQL
libraries.  The static Makefiles uses a simpler method by calling
`mysql_config` directly from the Makefile.

4 years agoRemove old-style DLZ drivers linked into named at compile time
Ondřej Surý [Mon, 20 Sep 2021 10:40:07 +0000 (12:40 +0200)] 
Remove old-style DLZ drivers linked into named at compile time

The old-style DLZ drivers were already marked as no longer actively
maintained and expected to be removed eventually.  With the new automake
build system, the old-style DLZ drivers were not updated, and instead of
putting an effort into something that's not being maintained, let's
rather remove the unmaintained code.

Closes: #2814
4 years agoMerge branch '2882-deprecate-and-remove-masterfile-map-option' into 'main'
Ondřej Surý [Fri, 17 Sep 2021 07:10:48 +0000 (07:10 +0000)] 
Merge branch '2882-deprecate-and-remove-masterfile-map-option' into 'main'

Remove the masterfile-format type 'map'

Closes #2882

See merge request isc-projects/bind9!5417

4 years agoAdd CHANGES and release note for [GL #2882] (removal)
Ondřej Surý [Thu, 16 Sep 2021 11:03:35 +0000 (13:03 +0200)] 
Add CHANGES and release note for [GL #2882] (removal)

4 years agoRemove the mastefile-format map option
Ondřej Surý [Thu, 16 Sep 2021 09:46:13 +0000 (11:46 +0200)] 
Remove the mastefile-format map option

As previously announced, this commit removes the masterfile-format
format 'map' from named, all the tools, the documentation and the
system tests.

4 years agoMerge branch '2882-deprecate-masterfile-map-option' into 'main'
Ondřej Surý [Fri, 17 Sep 2021 04:18:19 +0000 (04:18 +0000)] 
Merge branch '2882-deprecate-masterfile-map-option' into 'main'

Mark the masterfile-format type 'map' as deprecated

Closes #2882

See merge request isc-projects/bind9!5418

4 years agoAdd CHANGES and releases notes for [GL #2882]
Ondřej Surý [Thu, 16 Sep 2021 09:02:32 +0000 (11:02 +0200)] 
Add CHANGES and releases notes for [GL #2882]

4 years agoAdd masterfile-format checkconf tests
Ondřej Surý [Thu, 16 Sep 2021 08:58:38 +0000 (10:58 +0200)] 
Add masterfile-format checkconf tests

Add tests that check that masterfile-format map generate deprecation
warning and mastefile-formats text and raw doesn't.

4 years agoMark the masterfile-format type 'map' as deprecated
Ondřej Surý [Thu, 16 Sep 2021 08:38:22 +0000 (10:38 +0200)] 
Mark the masterfile-format type 'map' as deprecated

The map masterfile-format is very fragile and it needs API bump every
time a RBTDB data structures changes.  Also while testing it, we found
out that files larger than 2GB weren't loading and nobody noticed, and
loading many map files were also failing (subject to kernel limits).

Thus we are marking the masterfile-format type 'map' as deprecated and
to be removed in the next stable BIND 9 release.

4 years agoMerge branch 'mnowak/replace-centos-with-oraclelinux' into 'main'
Michal Nowak [Thu, 16 Sep 2021 14:02:26 +0000 (14:02 +0000)] 
Merge branch 'mnowak/replace-centos-with-oraclelinux' into 'main'

Replace CentOS 7 & 8 with Oracle Linux

See merge request isc-projects/bind9!5179

4 years agoReplace CentOS 7 & 8 with Oracle Linux
Michal Nowak [Tue, 15 Jun 2021 07:49:21 +0000 (09:49 +0200)] 
Replace CentOS 7 & 8 with Oracle Linux

4 years agoMerge branch 'michal/regenerate-man-pages-with-docutils-0.17.1' into 'main'
Michał Kępień [Thu, 16 Sep 2021 09:00:01 +0000 (09:00 +0000)] 
Merge branch 'michal/regenerate-man-pages-with-docutils-0.17.1' into 'main'

Regenerate man pages with docutils 0.17.1

See merge request isc-projects/bind9!5415

4 years agoRegenerate man pages with docutils 0.17.1
Michał Kępień [Thu, 16 Sep 2021 08:57:04 +0000 (10:57 +0200)] 
Regenerate man pages with docutils 0.17.1

The Debian 10 (buster) Docker image, which GitLab CI uses for building
documentation, currently contains the following package versions:

  - Sphinx 4.2.0
  - sphinx-rtd-theme 1.0.0
  - docutils 0.17.1

Regenerate the man pages to match contents produced in a Sphinx
environment using the above package versions.  This is necessary to
prevent the "docs" GitLab CI job from failing.

4 years agoMerge branch '2906-sig-signing-type-breaks-named-checkconf-p-pretty-output' into...
Mark Andrews [Thu, 16 Sep 2021 08:41:26 +0000 (08:41 +0000)] 
Merge branch '2906-sig-signing-type-breaks-named-checkconf-p-pretty-output' into 'main'

Resolve "sig-signing-type breaks `named-checkconf -p` pretty output"

Closes #2906

See merge request isc-projects/bind9!5410

4 years agoAdd CHANGES for [GL #2906]
Mark Andrews [Thu, 16 Sep 2021 01:46:38 +0000 (11:46 +1000)] 
Add CHANGES for [GL #2906]

4 years agoCheck that sig-signing-type works
Mark Andrews [Thu, 16 Sep 2021 01:36:52 +0000 (11:36 +1000)] 
Check that sig-signing-type works

* showprivate needed to be extended to support the alternate type

* checkprivate updated to error when expected records are not present

4 years agoTest that sig-signing-type is accepted
Mark Andrews [Thu, 16 Sep 2021 00:36:35 +0000 (10:36 +1000)] 
Test that sig-signing-type is accepted

4 years agoSpecifying sig-signing-type causes named to fail
Mark Andrews [Thu, 16 Sep 2021 00:30:37 +0000 (10:30 +1000)] 
Specifying sig-signing-type causes named to fail

the range check error was being applied unconditionally

4 years agoMerge branch '2903-cache-file' into 'main'
Evan Hunt [Thu, 16 Sep 2021 07:39:11 +0000 (07:39 +0000)] 
Merge branch '2903-cache-file' into 'main'

deprecate and remove "cache-file"

Closes #2903

See merge request isc-projects/bind9!5404

4 years agomark "cache-file" as ancient and remove all code implementing it
Evan Hunt [Wed, 15 Sep 2021 08:05:05 +0000 (01:05 -0700)] 
mark "cache-file" as ancient and remove all code implementing it

"cache-file" was already documented as intended for testing
purposes only and not to be used, so we can remove it without
waiting.  this commit marks the option as "ancient", and
removes all the documentation and implementing code, including
dns_cache_setfilename() and dns_cache_dump().

it also removes the documentation for the '-x cachefile`
parameter to named, which had already been removed, but the man
page was not updated at the time.

4 years agodeprecate "cache-file"
Evan Hunt [Wed, 15 Sep 2021 07:56:41 +0000 (00:56 -0700)] 
deprecate "cache-file"

this commit marks the "cache-file" option as deprecated.

4 years agoMerge branch '2907-address-pylint-2.10.2-warnings' into 'main'
Michał Kępień [Thu, 16 Sep 2021 06:51:05 +0000 (06:51 +0000)] 
Merge branch '2907-address-pylint-2.10.2-warnings' into 'main'

Address PyLint 2.10.2 warnings

Closes #2907

See merge request isc-projects/bind9!5412

4 years agoRemove redundant prefix from Python 3 strings
Michał Kępień [Thu, 16 Sep 2021 06:22:01 +0000 (08:22 +0200)] 
Remove redundant prefix from Python 3 strings

Address the following warnings reported by PyLint 2.10.2:

    ************* Module conf
    doc/arm/conf.py:90:10: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)
    doc/arm/conf.py:92:12: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)
    doc/arm/conf.py:93:9: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)
    doc/arm/conf.py:143:31: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)
    doc/man/conf.py:33:10: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)
    doc/man/conf.py:38:12: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)
    doc/man/conf.py:39:9: W1406: The u prefix for strings is no longer necessary in Python >=3.0 (redundant-u-string-prefix)

4 years agoExplicitly specify encoding for open() calls
Michał Kępień [Thu, 16 Sep 2021 06:22:01 +0000 (08:22 +0200)] 
Explicitly specify encoding for open() calls

Address the following warnings reported by PyLint 2.10.2:

    ************* Module tests-checkds
    bin/tests/system/checkds/tests-checkds.py:70:9: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
    bin/tests/system/checkds/tests-checkds.py:120:13: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
    bin/tests/system/checkds/tests-checkds.py:206:17: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
    ************* Module yamlget
    bin/tests/system/digdelv/yamlget.py:22:5: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
    ************* Module stress_http_quota
    bin/tests/system/doth/stress_http_quota.py:131:13: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
    ************* Module tests-rpz-passthru-logging
    bin/tests/system/rpzextra/tests-rpz-passthru-logging.py:40:9: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)
    bin/tests/system/rpzextra/tests-rpz-passthru-logging.py:44:9: W1514: Using open without explicitly specifying an encoding (unspecified-encoding)

4 years agoRemove redundant zone_keyid() function
Michał Kępień [Thu, 16 Sep 2021 06:22:01 +0000 (08:22 +0200)] 
Remove redundant zone_keyid() function

The zone_keyid() helper function defined in
bin/tests/system/statschannel/helper.py is not used anywhere.  Remove
it.

4 years agoMerge branch 'v9_17_18-release' into 'main'
Michał Kępień [Wed, 15 Sep 2021 20:59:39 +0000 (20:59 +0000)] 
Merge branch 'v9_17_18-release' into 'main'

Merge 9.17.18 release branch

See merge request isc-projects/bind9!5408

4 years agoSet up release notes for BIND 9.17.19
Michał Kępień [Wed, 15 Sep 2021 20:49:20 +0000 (22:49 +0200)] 
Set up release notes for BIND 9.17.19

4 years agoUpdate BIND version to 9.17.18
Michał Kępień [Tue, 7 Sep 2021 07:58:04 +0000 (09:58 +0200)] 
Update BIND version to 9.17.18

4 years agoAdd a CHANGES marker
Michał Kępień [Tue, 7 Sep 2021 07:58:04 +0000 (09:58 +0200)] 
Add a CHANGES marker

4 years agoMerge branch 'michal/prepare-documentation-for-bind-9.17.18' into 'v9_17_18-release'
Michał Kępień [Tue, 7 Sep 2021 07:56:42 +0000 (07:56 +0000)] 
Merge branch 'michal/prepare-documentation-for-bind-9.17.18' into 'v9_17_18-release'

Prepare documentation for BIND 9.17.18

See merge request isc-private/bind9!320