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

31876 Commits

Author SHA1 Message Date
Ondřej Surý
1013c0930e Add missing acquire memory barrier in isc_nmhandle_unref
The ThreadSanitizer uses system synchronization primitives to check for
data race.  The netmgr handle->references was missing acquire memory
barrier before resetting and reusing the memory occupied by isc_nmhandle_t.
2020-06-11 13:01:26 +02:00
Mark Andrews
50d3344ca5 Merge branch 'marka-dsset-refs' into 'master'
The dsset returned by dns_keynode_dsset() was not thread safe

Closes #1926

See merge request isc-projects/bind9!3687
2020-06-11 06:07:21 +00:00
Mark Andrews
f97889a51a Add release note for [GL #1926] 2020-06-11 16:04:28 +10:00
Mark Andrews
9d89244ba2 Add CHANGES note [GL #1926] 2020-06-11 16:04:28 +10:00
Mark Andrews
ff4fc3f8dc val->keynode is no longer needed 2020-06-11 16:03:11 +10:00
Mark Andrews
e5b2eca1d3 The dsset returned by dns_keynode_dsset needs to be thread safe.
- clone keynode->dsset rather than return a pointer so that thread
  use is independent of each other.
- hold a reference to the dsset (keynode) so it can't be deleted
  while in use.
- create a new keynode when removing DS records so that dangling
  pointers to the deleted records will not occur.
- use a rwlock when accessing the rdatalist to prevent instabilities
  when DS records are added.
2020-06-11 16:02:09 +10:00
Evan Hunt
c24f4eb1c9 Merge branch '1930-tcp-race-quota' into 'master'
Fix a race in TCP accepting.

Closes #1930

See merge request isc-projects/bind9!3683
2020-06-10 18:49:33 +00:00
Witold Kręcicki
85d8e4bf76 Fix a race in TCP accepting.
There's a possibility of a race in TCP accepting code:
T1 accepts a connection C1
T2 accepts a connection C2
T1 tries to accept a connection C3, but we hit a quota,
   isc_quota_cb_init() sets quota_accept_cb for the socket,
   we return from accept_connection
T2 drops C2, but we race in quota_release with accepting C3 so
   we don't see quota->waiting is > 0, we don't launch the callback
T1 accepts a connection C4, we are able to get the quota we clear
   the quota_accept_cb from sock->quotacb
T1 drops C1, tries to call the callback which is zeroed, sigsegv.
2020-06-10 11:37:27 -07:00
Witold Kręcicki
c449cab63a Don't clean quota cb cb_func/data, we don't own it 2020-06-10 17:52:00 +02:00
Michał Kępień
cc2383e0ab Merge branch '1867-fix-system-tests-on-windows' into 'master'
Fix system tests on Windows

Closes #1867

See merge request isc-projects/bind9!3680
2020-06-09 13:38:39 +00:00
Michał Kępień
fef15bc33d Disable temporarily unsupported tests on Windows
Due to the changes introduced by the Automake migration, system tests
requiring Python (chain, pipelined, qmin, tcp), dynamic loading of
shared objects (dlzexternal, dyndb, filter-aaaa), or LMDB (nzd2nzf)
currently do not work on Windows.  Temporarily disable them on that
platform by moving them from the PARALLEL_COMMON list to the
PARALLEL_UNIX list until the situation is rectified.
2020-06-09 15:35:54 +02:00
Michał Kępień
1861866f63 Fix SYSTEMTESTTOP on Windows
Without SYSTEMTESTTOP=.. lines in tests.sh scripts, SYSTEMTESTTOP is
being set to an absolute path.  On Windows, this means that an absolute
Cygwin path gets passed as a command line argument to native Windows
binaries, which cannot work and causes system tests to break.  Fix by
passing SYSTEMTESTTOP through cygpath on Windows, which causes that
variable to be set to an absolute "mixed mode" path (Windows path with
forward slashes).
2020-06-09 15:35:54 +02:00
Michał Kępień
3437a78e39 Merge branch '1921-gitlab-ci-release-process-fixes' into 'master'
GitLab CI release process fixes

Closes #1921

See merge request isc-projects/bind9!3670
2020-06-09 12:51:05 +00:00
Michał Kępień
03c874c292 Restore GitLab CI job building release tarballs
With "make dist" producing usable source tarballs and documentation
building working again, restore the script which allows a release
tarball to be built by a GitLab CI job, only making minimal adjustments
required due to the changes in the documentation building process and
due to dropping the "version" file.
2020-06-09 14:47:06 +02:00
Michał Kępień
4118805348 Make Sphinx output document naming consistent
Ensure the name of the EPUB file produced by Sphinx is consistent with
the name of its PDF counterpart by adjusting Sphinx configuration.
2020-06-09 14:47:06 +02:00
Michał Kępień
b36b7e8674 Fix respdiff job in GitLab CI
As the "configure" script is no longer stored in the Git repository, run
"autoreconf -fi" at the beginning of the respdiff job in GitLab CI in
order to enable that job to work properly.
2020-06-09 14:47:06 +02:00
Michał Kępień
03adbac3c6 Fix source tarball creation job in GitLab CI
For the time being, "make all" needs to be run before "make dist" can
succeed as parts of the documentation are generated by programs compiled
during the regular build process.

As only one source tarball is published for each BIND release, make sure
the tarball creation job in GitLab CI only contains one tarball in the
desired format among its artifacts.

Drop the TARBALL_COMPRESSOR .gitlab-ci.yml variable as it is no longer
used in the source tarball creation process.
2020-06-09 14:47:06 +02:00
Michał Kępień
ed212e9c63 Revise "srcid" file handling
The "srcid" file present in each BIND source tarball contains a
shortened hash of the Git commit corresponding to a given BIND release.
This allows a Git reference to be included in an archive that otherwise
lacks any Git information.

Before the move to Automake, if an "srcid" file was present in the root
source directory at the time ./configure was run, its contents were used
as the value of a compile-time constant which was then baked into BIND
binaries; otherwise, "git rev-parse" was used to determine the value of
that constant.

With Automake, a similar approach was attempted that required the
"srcid" file to be present at autoreconf time in order for it to be
used.  However, note that this means that even if that file is present
in a source tarball created using "make dist", its contents are not
going to influence the value of the aforementioned compile-time constant
because autoreconf hardcodes the output of "git rev-parse" into the
configure script at autoreconf time.

To make things more clear, always use "git rev-parse" for determining
the value of the PACKAGE_SRCID compile-time constant when running
autoreconf.  This causes "srcid" to be an empty string in source
tarballs built from other source tarballs, but that is not deemed to be
much of an issue as "make dist" is expected to be run from Git
repository clones.  Remove stderr redirections to /dev/null to ensure
errors caused e.g. by running "make dist" from outside a Git repository
clone are not hidden.  Trim the Git commit hash to 7 characters for
consistency between Unix and Windows systems.

Despite the above, ensure the "srcid" file is present in source tarballs
created using "make dist" as that file is used by the build process on
Windows.
2020-06-09 14:47:06 +02:00
Ondřej Surý
d959517290 Merge branch '1808-race-in-resolver-fetch-fix-restore-client' into 'master'
ensure fctx->clientstr is null-terminated

Closes #1808

See merge request isc-projects/bind9!3675
2020-06-06 05:02:12 +00:00
Evan Hunt
364b349ad2 ensure clientstr is null-terminated 2020-06-05 18:56:40 -07:00
Ondřej Surý
1540e42449 Merge branch '1842-correct-the-bind-arm-to-say-that-the-default-session-key-for-use-with-update-policy-local-is' into 'master'
Resolve "Correct the BIND ARM to say that the default session-key for use with 'update-policy local;' is generated at startup"

Closes #1842

See merge request isc-projects/bind9!3664
2020-06-05 14:35:05 +00:00
Suzanne Goldlust
79920cea70 Edit reference.rst to indicate that the TSIG
session key is automatically created on startup
2020-06-05 14:31:56 +00:00
Ondřej Surý
60e95f3c3f Merge branch '1808-race-in-resolver-fetch' into 'master'
Fix a data access race in resolver.

Closes #1912 and #1808

See merge request isc-projects/bind9!3575
2020-06-05 14:21:12 +00:00
Ondřej Surý
5a9f594629 Add release note for #1808 2020-06-05 16:06:42 +02:00
Witold Kręcicki
f0f859411f Add CHANGES entry for #1808 2020-06-05 16:06:42 +02:00
Witold Kręcicki
175c4d9055 Fix a data access race in resolver
We were passing client address to dns_resolver_createfetch as a pointer
and it was saved as a pointer. The client (with its address) could be
gone before the fetch is finished, and in a very odd scenario
log_formerr would call isc_sockaddr_format() which first checks if the
address family is valid (and at this point it still is), then the
sockaddr is cleared, and then isc_netaddr_fromsockaddr is called which
fails an assertion as the address family is now invalid.
2020-06-05 16:06:42 +02:00
Michał Kępień
d494543d6e Merge branch 'mnowak/1769-ensure-all-necessary-files-are-included-in-the-tarball-produced-by-make-dist' into 'master'
Fix 'make dist'

Closes #1769

See merge request isc-projects/bind9!3527
2020-06-05 11:48:55 +00:00
Michal Nowak
5bbc6dd7f1 Fix "make dist"
Make various adjustments necessary to enable "make dist" to build a BIND
source tarball whose contents are complete enough to build binaries, run
unit & system tests, and generate documentation on Unix systems.

Known outstanding issues:

  - "make distcheck" does not work yet.
  - Tests do not work for out-of-tree source-tarball-based builds.
  - Source tarballs are not complete enough for building on Windows.

All of the above will be addressed in due course.
2020-06-05 13:19:49 +02:00
Michal Nowak
eaebc26451 Get rid of "helper" *.c files
Merge lib/isc/unix/ifiter_getifaddrs.c into lib/isc/unix/interfaceiter.c
and lib/isc/xoshiro128starstar.c into lib/isc/random.c.  This avoids the
need for extra Automake directives required to process the "helper" *.c
files properly and makes the code more localized.
2020-06-05 13:19:49 +02:00
Michał Kępień
c3cfdb9670 Refactor lib/isc/fsaccess.c
Turn the static check_bad_bits() function used by both Unix and Windows
systems into a "private" function and extract the "private" parts of
lib/isc/fsaccess.c to lib/isc/fsaccess_common_p.h.  Instead of including
lib/isc/fsaccess.c from lib/isc/{unix,win32}/fsaccess.c, make the former
an independent C source file.

Rename lib/isc/fsaccess.c to lib/isc/fsaccess_common.c to prevent build
issues on Windows caused by multiple source files (lib/isc/fsaccess.c,
lib/isc/win32/fsaccess.c) being compiled into the same object file.

These changes improve consistency with the way "private" functions and
macros are treated elsewhere in the source tree.
2020-06-05 13:19:49 +02:00
Mark Andrews
dc6b26abad Merge branch 'marka-placeholder' into 'master'
placeholder

See merge request isc-projects/bind9!3668
2020-06-05 05:02:23 +00:00
Mark Andrews
a7c7f330d7 placeholder 2020-06-05 14:58:51 +10:00
Mark Andrews
210c1dc1cf Merge branch 'marka-placeholder' into 'master'
Add placeholder for [GL #1873]

See merge request isc-projects/bind9!3665
2020-06-05 00:39:36 +00:00
Mark Andrews
69863f3c82 Add placeholder for [GL #1873] 2020-06-05 00:36:47 +00:00
Mark Andrews
b4a1928c84 Merge branch '1835-add-yaml-for-ede' into 'master'
Resolve "Add the ability to parse and display Extended DNS Error code (EDE)."

Closes #1835

See merge request isc-projects/bind9!3531
2020-06-05 00:34:31 +00:00
Mark Andrews
9e72266705 Improve the behaviour of yamlget.py when run with python2 2020-06-05 10:01:08 +10:00
Mark Andrews
0ec77c2b92 Add +yaml support for EDE 2020-06-05 08:34:51 +10:00
Ondřej Surý
e85bb7b85d Merge branch '1683-check-the-question-section-when-transferring-zones' into 'master'
Resolve "Check the question section when transferring zones."

Closes #1683

See merge request isc-projects/bind9!3244
2020-06-04 14:14:36 +00:00
Mark Andrews
3c65ff7deb Add CHANGES entry and release note for #1683 2020-06-04 16:11:05 +02:00
Evan Hunt
be2972438c Add a test with an incorrect question in a continuation message 2020-06-04 16:10:41 +02:00
Mark Andrews
fd96a41868 Verify the question section when transfering in.
There was a case where an primary server sent a response
on the wrong TCP connection and failure to check the question
section resulted in a truncated zone being served.
2020-06-04 16:10:41 +02:00
Ondřej Surý
e2f362c55b Merge branch '1798-reject-master-zones-with-ds-records-at-the-apex' into 'master'
Resolve "Reject master zones with DS records at the apex."

Closes #1798

See merge request isc-projects/bind9!3435
2020-06-04 14:01:14 +00:00
Mark Andrews
8b05e6f710 Add release note for #1798 2020-06-04 16:00:33 +02:00
Mark Andrews
06e714df0d Add CHANGES entry for #1798 2020-06-04 16:00:33 +02:00
Mark Andrews
ae55fbbe9c Ignore attempts to add DS records at zone apex
DS records belong in the parent zone at a zone cut and
are not retrievable with modern recursive servers.
2020-06-04 16:00:33 +02:00
Mark Andrews
35a58d30c9 Reject primary zones with an DS record at the zone apex.
DS records only belong at delegation points and if present
at the zone apex are invariably the result of administrative
errors.  Additionally they can't be queried for with modern
resolvers as the parent servers will be queried.
2020-06-04 16:00:33 +02:00
Ondřej Surý
2d6f379935 Merge branch '1782-ipv6-docs' into 'master'
Documentation update wrt IPv6 listening.

Closes #1782

See merge request isc-projects/bind9!3642
2020-06-04 13:53:17 +00:00
Witold Kręcicki
d3ea1caf5a Add release notes for #1782 2020-06-04 15:50:40 +02:00
Witold Kręcicki
6a2100034b Documentation update wrt IPv6 listening.
With netmgr we're creating separate socket for each IPv6 interface,
just as with IPv4 - update documentation accordingly.
2020-06-04 15:50:29 +02:00
Ondřej Surý
7bf3636160 Merge branch 'marka-pass-path-in-env' into 'master'
Preserve PATH when calling make

See merge request isc-projects/bind9!3605
2020-06-04 13:45:41 +00:00