Commit Graph

11139 Commits

Author SHA1 Message Date
Mark Andrews
0936009af6 fix cppcheck warning: unusedVariable by reducing the scope of 'result' 2019-10-02 09:25:00 +10:00
Mark Andrews
1f3f8263a8 fix cppcheck warning: shadowedVariable by reducing scope of 'p' 2019-10-02 09:25:00 +10:00
Mark Andrews
c46caa92e8 fix cppcheck warning: unassignedVariable 2019-10-02 09:25:00 +10:00
Mark Andrews
73c1a7e03b fix cppcheck warnings: unreadVariable 2019-10-02 09:25:00 +10:00
Mark Andrews
875776e5a6 fix cppcheck warnings: adjust format strings to match arguments. 2019-10-02 09:25:00 +10:00
Mark Andrews
d6a14935b7 fix cppcheck warnings: duplicateCondition 2019-10-01 21:28:30 +10:00
Mark Andrews
76745b8cb5 Address cut-and-paste error where list name was not changed in one instance for change 5292.
(cherry picked from commit 9cd308ac5e)
2019-09-29 10:52:47 +10:00
Michał Kępień
61e4c9198a Make VS solution upgrading unnecessary
Until now, the build process for BIND on Windows involved upgrading the
solution file to the version of Visual Studio used on the build host.
Unfortunately, the executable used for that (devenv.exe) is not part of
Visual Studio Build Tools and thus there is no clean way to make that
executable part of a Windows Server container.

Luckily, the solution upgrade process boils down to just adding XML tags
to Visual Studio project files and modifying certain XML attributes - in
files which we pregenerate anyway using win32utils/Configure.  Thus,
extend win32utils/Configure with three new command line parameters that
enable it to mimic what "devenv.exe bind9.sln /upgrade" does.  This
makes the devenv.exe build step redundant and thus facilitates building
BIND in Windows Server containers.

(cherry picked from commit 0476e8f1ac)
2019-09-27 12:13:39 +02:00
Ondřej Surý
8b86335504 Fix unprotected access to rbtnode in lib/dns/rbtdb.c:add32()
(cherry picked from commit e307273307)
2019-09-25 13:36:56 +02:00
Mark Andrews
7d89e40ea0 Queue nsec3param setting until receive_secure_serial has completed.
(cherry picked from commit 456888c00f)
2019-09-24 11:38:26 +10:00
Mark Andrews
7fb0a0db53 reinstate error handler 2019-09-13 14:17:32 +10:00
Mark Andrews
0d23bc5b55 declare alloc_failure 2019-09-13 13:57:41 +10:00
Mark Andrews
9ee27573af declare result 2019-09-13 13:48:20 +10:00
Mark Andrews
ff700b2259 address or suppress cppcheck warnings
(cherry picked from commit b59fe46e76)
2019-09-12 19:31:56 +10:00
Tinderbox User
1860bab56b prep for 9.11.11 2019-09-09 14:22:44 +00:00
Mark Andrews
47722eacbf remove accidentally back ported code 2019-09-09 16:27:22 +10:00
Mark Andrews
5c23d41ba3 check that 'valuep' is not NULL befor assigning to '*valuep' 2019-09-06 11:50:30 +10:00
Mark Andrews
34eba51728 fix backport of maxudp for windows 2019-09-04 16:09:07 +10:00
Mark Andrews
b44ad05d20 implement maxudp under windows
(cherry picked from commit 2f558854b7)
2019-09-04 11:09:31 +10:00
Ondřej Surý
3c85a1f104 Fix alignment issues in the native implementation of isc_siphash24()
The native implementation's conversion from the uint8_t buffers to uint64_t now
follows the reference implementation that doesn't require aligned buffers.
2019-09-02 13:22:40 +02:00
Evan Hunt
564a62bc2f use an rbtnodechain to walk up labels
when looking for a possible wildcard match in the RPZ summary database,
use an rbtnodechain to walk up label by label, rather than using the
node's parent pointer.

(cherry picked from commit 6e9be9a952)
2019-08-29 20:05:22 -07:00
Ondřej Surý
397249f0b3 Fix uninitialized variable warning in restore_nsec3param()
(cherry picked from commit 1c084c35f0)
2019-08-29 16:04:05 +02:00
Mark Andrews
b94f0db15b check that open() succeeded
(cherry picked from commit 510306c654)
2019-08-29 10:26:22 +10:00
Mark Andrews
b67c6fe8bd Add support for displaying EDNS option LLQ.
(cherry picked from commit d98f446d3f)
2019-08-28 17:48:24 +10:00
Mark Andrews
6aee585e94 add dns_zone_cdscheck to integrity checks
(cherry picked from commit cd40c9fe61)
2019-08-28 16:27:09 +10:00
Mark Andrews
70a85ab614 implement getoriginnode for sdb
(cherry picked from commit 2ebc4776ca)
2019-08-28 16:26:24 +10:00
Tinderbox User
eb55184bda prep 9.11.10 2019-08-13 09:34:56 +00:00
Michał Kępień
3806811c04 Fix faulty backport which broke the Windows build
Commit 91307842b8 inadvertently mangled
the XML structure inside lib/isc/win32/libisc.vcxproj.filters.in, thus
breaking the Windows build.  Add the missing XML tags to make Windows
builds work again.
2019-08-08 20:45:30 +02:00
Ondřej Surý
e80c4c3431 Have the dns_client hold a .references until all external references are removed
so that cleanup can all be done in dns_client_destroy().
2019-08-07 11:35:06 +02:00
Mark Andrews
be8af3afb7 Have the view hold a weakref until all external references are removed
so that cleanup can all be done in dns_view_weakattach().
2019-08-06 17:18:48 +02:00
Ondřej Surý
6353032a8a lib/isc/app_api.c: Protect the global is_running bool variable with a mutex 2019-08-06 15:03:35 +02:00
Ondřej Surý
a7c9a52c89 lib/dns/resolver.c: Convert (dns_view_t *)->weakrefs to isc_refcount_t
There's a deadlock in BIND 9 code where (dns_view_t){ .lock } and
(dns_resolver_t){ .buckets[i].lock } gets locked in different order.  When
view->weakrefs gets converted to a reference counting we can reduce the locking
in dns_view_weakdetach only to cases where it's the last instance of the
dns_view_t object.
2019-08-06 15:03:35 +02:00
Mark Andrews
cfbefb57d6 Store the DS and RRSIG(DS) with trust dns_trust_pending_answer
so that the validator can validate the records as part of validating
the current request.

(cherry picked from commit 57a328d67e)
2019-08-02 16:52:57 +10:00
Mark Andrews
30f5a99364 check that bits 64..71 in a dns64 prefix are zero
(cherry picked from commit a7ec7eb6ed)
2019-07-31 22:45:02 +10:00
Mark Andrews
75d89f023a handle connect() returning ETIMEDOUT on a non-blocking socket
(cherry picked from commit 91a0cb5da3)
2019-07-31 11:03:56 +10:00
Michał Kępień
28c89c37b0 Do not use legacy time zone names
"PST8PDT" is a legacy time zone name whose use in modern code is
discouraged.  It so happens that using this time zone with musl libc
time functions results in different output than for other libc
implementations, which breaks the lib/isc/tests/time_test unit test.
Use the "America/Los_Angeles" time zone instead in order to get
consistent output across all tested libc implementations.

(cherry picked from commit f4daf6e0e7)
2019-07-30 22:22:28 +02:00
Michał Kępień
3098c79270 Always include <errno.h> instead of <sys/errno.h>
Including <sys/errno.h> instead of <errno.h> raises a compiler warning
when building against musl libc.  Always include <errno.h> instead of
<sys/errno.h> to prevent that compilation warning from being triggered
and to achieve consistency in this regard across the entire source tree.

(cherry picked from commit b5cd146033)
2019-07-30 22:22:28 +02:00
Michał Kępień
eb13d4b279 Unify header ordering in unit tests
Make sure all unit tests include headers in a similar order:

 1. Three headers which must be included before <cmocka.h>.
 2. System headers.
 3. UNIT_TESTING definition, followed by the <cmocka.h> header.
 4. libisc headers.
 5. Headers from other BIND libraries.
 6. Local headers.

Also make sure header file names are sorted alphabetically within each
block of #include directives.

(cherry picked from commit 5381ac0fcc)
2019-07-30 22:22:28 +02:00
Michał Kępień
5e9ac86c2b Include <sched.h> where necessary for musl libc
All unit tests define the UNIT_TESTING macro, which causes <cmocka.h> to
replace malloc(), calloc(), realloc(), and free() with its own functions
tracking memory allocations.  In order for this not to break
compilation, the system header declaring the prototypes for these
standard functions must be included before <cmocka.h>.

Normally, these prototypes are only present in <stdlib.h>, so we make
sure it is included before <cmocka.h>.  However, musl libc also defines
the prototypes for calloc() and free() in <sched.h>, which is included
by <pthread.h>, which is included e.g. by <isc/mutex.h>.  Thus, unit
tests including "dnstest.h" (which includes <isc/mem.h>, which includes
<isc/mutex.h>) after <cmocka.h> will not compile with musl libc as for
these programs, <sched.h> will be included after <cmocka.h>.

Always including <cmocka.h> after all other header files is not a
feasible solution as that causes the mock assertion macros defined in
<isc/util.h> to mangle the contents of <cmocka.h>, thus breaking
compilation.  We cannot really use the __noreturn__ or analyzer_noreturn
attributes with cmocka assertion functions because they do return if the
tested condition is true.  The problem is that what BIND unit tests do
is incompatible with Clang Static Analyzer's assumptions: since we use
cmocka, our custom assertion handlers are present in a shared library
(i.e. it is the cmocka library that checks the assertion condition, not
a macro in unit test code).  Redefining cmocka's assertion macros in
<isc/util.h> is an ugly hack to overcome that problem - unfortunately,
this is the only way we can think of to make Clang Static Analyzer
properly process unit test code.  Giving up on Clang Static Analyzer
being able to properly process unit test code is not a satisfactory
solution.

Undefining _GNU_SOURCE for unit test code could work around the problem
(musl libc's <sched.h> only defines the prototypes for calloc() and
free() when _GNU_SOURCE is defined), but doing that could introduce
discrepancies for unit tests including entire *.c files, so it is also
not a good solution.

All in all, including <sched.h> before <cmocka.h> for all affected unit
tests seems to be the most benign way of working around this musl libc
quirk.  While quite an ugly solution, it achieves our goals here, which
are to keep the benefit of proper static analysis of unit test code and
to fix compilation against musl libc.

(cherry picked from commit 59528d0e9d)
2019-07-30 22:22:27 +02:00
Evan Hunt
2a80d4e277 fix a bug that could cause an assert when configuring "geoip continent"
- incidentally fixed some typos in log messages

(cherry picked from commit 326349228a)
2019-07-25 22:52:18 -04:00
Mark Andrews
de153f1a43 Do not attempt to perform a DNS64 rewrite if RPZ returns NODATA.
(cherry picked from commit 1eb640049c)
2019-07-25 07:26:35 +10:00
Mark Andrews
8f2d5e6a86 named-checkconf failed to report dnstap-output missing
from named.conf when dnstap was specified

(cherry picked from commit a4f38bec6a)
2019-07-23 23:36:40 +10:00
Ondřej Surý
a0f4e6d27e Add new siphash24 DNS Cookie algorithm
This commit changes the BIND cookie algorithms to match
draft-sury-toorop-dnsop-server-cookies-00.  Namely, it changes the Client Cookie
algorithm to use SipHash 2-4, adds the new Server Cookie algorithm using SipHash
2-4.  The change doesn't make the SipHash 2-4 to be the default algorithm, this
is up to the operator.

(cherry picked from commit 196b342bc9)
2019-07-22 09:06:03 -04:00
Ondřej Surý
63666fc926 Revise the Windows section of <isc/endian.h>
Add a comment and remove redundant definitions.

(cherry picked from commit 84ff6a6963)
2019-07-22 08:09:48 -04:00
Ondřej Surý
1fd8b2d9f4 Revise the macOS section of <isc/endian.h>
Move the macOS section of <isc/endian.h> to a lower spot as it is
believed not to be the most popular platform for running BIND.  Add a
comment and remove redundant definitions.

(cherry picked from commit c727a31eab)
2019-07-22 08:09:48 -04:00
Ondřej Surý
55a95f7cd7 Make <isc/endian.h> detect GNU rather than Linux
Instead of only supporting Linux, try making <isc/endian.h> support
other GNU platforms as well.  Since some compilers define __GNUC__ on
BSDs (e.g. Clang on FreeBSD), move the relevant section to the bottom of
the platform-specific part of <isc/endian.h>, so that it only gets
evaluated when more specific platform determination criteria are not
met.  Also include <byteswap.h> so that any byte-swapping macros which
may be defined in that file on older platforms are used in the fallback
definitions of the nonstandard hto[bl]e{16,32,64}() and
[bl]e{16,32,64}toh() conversion functions.

(cherry picked from commit a98c7408fc)
2019-07-22 08:09:48 -04:00
Ondřej Surý
7b74cd6231 Add Solaris support for <isc/endian.h>
While Solaris does not support the nonstandard hto[bl]e{16,32,64}() and
[bl]e{16,32,64}toh() conversion functions, it does have some
byte-swapping macros available in <sys/byteorder.h>.  Ensure these
macros are used in the fallback definitions of the aforementioned
nonstandard functions.

(cherry picked from commit 5b0f81e549)
2019-07-22 08:09:48 -04:00
Ondřej Surý
d3a8c162d8 Add fallback definitions to <isc/endian.h>
Since the hto[bl]e{16,32,64}() and [bl]e{16,32,64}toh() conversion
functions are nonstandard, add fallback definitions of these functions
to <isc/endian.h>, so that their unavailability does not prevent
compilation from succeeding.

(cherry picked from commit 973d2991a0)
2019-07-22 08:09:48 -04:00
Michał Kępień
3c7cab3f22 Fix <isc/endian.h> on BSD systems
Current versions of DragonFly BSD, FreeBSD, NetBSD, and OpenBSD all
support the modern variants of functions converting values between host
and big-endian/little-endian byte order while older ones might not.
Ensure <isc/endian.h> works properly in both cases.

(cherry picked from commit 588c14d5c9)
2019-07-22 08:09:48 -04:00
Ondřej Surý
07502731e0 Add tests for the isc_siphash24 function
(cherry picked from commit 2cbf633192)
(cherry picked from commit 2188a58171)
2019-07-22 08:09:48 -04:00