Commit Graph

31309 Commits

Author SHA1 Message Date
Tinderbox User
152ff84f79 prep 9.16.2 2020-04-16 23:07:40 +02:00
Matthijs Mekking
fad5998fc9 Merge branch '1709-dnssec-policy-inlinesigning-v9_16' into 'v9_16'
Resolve "dnssec-policy implicitly enables inline-signing"

See merge request isc-projects/bind9!3389
2020-04-16 14:56:53 +00:00
Matthijs Mekking
a538ae2e1a Update changes
(cherry picked from commit acae6cf438)
2020-04-16 16:04:28 +02:00
Matthijs Mekking
75c330379c Add kasp tests dyn update zone
Add two tests that checks that dynamic zones
can be updated and will be signed appropriately.
One zone covers an update with freeze/thaw, the
other covers an update through nsupdate.

(cherry picked from commit e3aa12fc0a)
2020-04-16 16:04:28 +02:00
Matthijs Mekking
6e3654c434 dnssec-policy: to sign inline or not
When dnssec-policy was introduced, it implicitly set inline-signing.
But DNSSEC maintenance required either inline-signing to be enabled,
or a dynamic zone.  In other words, not in all cases you want to
DNSSEC maintain your zone with inline-signing.

Change the behavior and determine whether inline-signing is
required: if the zone is dynamic, don't use inline-signing,
otherwise implicitly set it.

You can also explicitly set inline-signing to yes with dnssec-policy,
the restriction that both inline-signing and dnssec-policy cannot
be set at the same time is now lifted.

However, 'inline-signing no;' on a non-dynamic zone with a
dnssec-policy is not possible.

(cherry picked from commit 644f0d958a)
2020-04-16 16:04:28 +02:00
Ondřej Surý
5d50f27bbe Merge branch '1763-improve-isc_buffer-API-documentation-v9_16' into 'v9_16'
Fix/improve some comments in buffer.h.

See merge request isc-projects/bind9!3390
2020-04-16 13:58:58 +00:00
Aaron Thompson
99f800df0d Fix/improve some comments in buffer.h.
isc_buffer_dup now cannot fail as a result of c73e5866c4.

(cherry picked from commit 850d8ae019)
2020-04-16 15:58:25 +02:00
Matthijs Mekking
ddbcf75c9c Merge branch 'matthijs-dnssec-keys-trust-anchors-leftovers-v9_16' into 'v9_16'
Replace leftover DNSSEC-KEYS with TRUST-ANCHORS - 9.16

See merge request isc-projects/bind9!3376
2020-04-16 13:08:40 +00:00
Matthijs Mekking
728112d70c Replace leftover DNSSEC-KEYS with TRUST-ANCHORS
Change 5332 renamed "dnssec-keys" configuration statement to the
more descriptive "trust-anchors".  Not all occurrences in the
documentation had been updated.

(cherry picked from commit 7c6dde024155585008e9bfd09c03722d69211d02)
2020-04-16 14:08:04 +02:00
Matthijs Mekking
4c87ea09c3 Merge branch 'matthijs-fix-digdelv-yamlget-v9_16' into 'v9_16'
Fix digdelv test - 9.16

See merge request isc-projects/bind9!3387
2020-04-16 12:06:14 +00:00
Matthijs Mekking
f980c888a5 Fix digdelv test
The yamlget.py file was changed in !3311 as part of making the
python code pylint and flake8 compliant.  This omitted setting
'item' to 'item[key]' which caused the digdelv yaml tests to fail.

Also, the pretty printing is not really necessary, so remove
the "if key not in item; print error" logic.

(cherry picked from commit 464d0417d1)
2020-04-16 13:28:54 +02:00
Ondřej Surý
e925880741 Merge branch '1755-tune-the-windows-build-so-we-can-use-wx-equivalent-of-werror-v9_16' into 'v9_16'
Resolve "Tune the Windows build, so we can use /WX (equivalent of -Werror)"

See merge request isc-projects/bind9!3378
2020-04-16 06:18:33 +00:00
Ondřej Surý
fd9237e18e Don't escape spaces in CONFIGARGS, use double backslash with all whitespace
(cherry picked from commit 9b0e85cbd5)
2020-04-16 07:56:38 +02:00
Ondřej Surý
7d87d88811 Align the irs_getnameinfo() declaration and definition on Windows
(cherry picked from commit e3076c4caa)
2020-04-16 07:56:38 +02:00
Ondřej Surý
8b84fb4f42 Disable MSB8028 warning
All our MSVS Project files share the same intermediate directory.  We
know that this doesn't cause any problems, so we can just disable the
detection in the project files.

Example of the warning:

  warning MSB8028: The intermediate directory (.\Release\) contains files shared from another project (dnssectool.vcxproj).  This can lead to incorrect clean and rebuild behavior.

(cherry picked from commit b6c2012d93)
2020-04-16 07:56:38 +02:00
Ondřej Surý
fd5167dd70 Fix the discrepancy between cfg_pluginlist_foreach declaration and definition
There was a missing indirection for the pluginlist_cb_t *callback in the
declaration of the cfg_pluginlist_foreach function.  Reported by MSVC as:

  lib\isccfg\parser.c(4057): warning C4028: formal parameter 4 different from declaration

(cherry picked from commit 4ffe725585)
2020-04-16 07:56:38 +02:00
Ondřej Surý
54f72ca7b6 Workaround MSVC warning C4477
Due to a way the stdatomic.h shim is implemented on Windows, the MSVC
always things that the outside type is the largest - atomic_(u)int_fast64_t.
This can lead to false positives as this one:

  lib\dns\adb.c(3678): warning C4477: 'fprintf' : format string '%u' requires an argument of type 'unsigned int', but variadic argument 2 has type 'unsigned __int64'

We workaround the issue by loading the value in a scoped local variable
with correct type first.

(cherry picked from commit 60c632ab91)
2020-04-16 07:56:37 +02:00
Ondřej Surý
d7948f9c8c Disable C4090 MSVC warning
MSVC documentation states: "This warning can be caused when a pointer to
a const or volatile item is assigned to a pointer not declared as
pointing to const or volatile."

Unfortunately, this happens when we dynamically allocate and deallocate
block of atomic variables using isc_mem_get and isc_mem_put.

Couple of examples:

  lib\isc\hp.c(134): warning C4090: 'function': different 'volatile' qualifiers [C:\builds\isc-projects\bind9\lib\isc\win32\libisc.vcxproj]
  lib\isc\hp.c(144): warning C4090: 'function': different 'volatile' qualifiers [C:\builds\isc-projects\bind9\lib\isc\win32\libisc.vcxproj]
  lib\isc\stats.c(55): warning C4090: 'function': different 'volatile' qualifiers [C:\builds\isc-projects\bind9\lib\isc\win32\libisc.vcxproj]
  lib\isc\stats.c(87): warning C4090: 'function': different 'volatile' qualifiers [C:\builds\isc-projects\bind9\lib\isc\win32\libisc.vcxproj]

(cherry picked from commit 063e05491b)
2020-04-16 07:56:37 +02:00
Ondřej Surý
c70159e792 Fix invalid cast in win32 stdatomic.h shim
The InterlockedOr8() and InterlockedAnd8() first argument was cast
to (atomic_int_fast8_t) instead of (atomic_int_fast8_t *), this was
reported by MSVC as:

  warning C4024: '_InterlockedOr8': different types for formal and actual parameter 1
  warning C4024: '_InterlockedAnd8': different types for formal and actual parameter 1

(cherry picked from commit 54168d55c0)
2020-04-16 07:56:37 +02:00
Ondřej Surý
9e6e1f587a Remove the Windows build job dependency on autoreconf job
(cherry picked from commit 70318943fe)
2020-04-16 07:56:37 +02:00
Ondřej Surý
8aef53cdb2 Disable MSVC C4133 when using stdatomic.h win32 shim
(cherry picked from commit b1f66d1e13)
2020-04-16 07:56:37 +02:00
Ondřej Surý
beee2a6598 Don't return from void function
(cherry picked from commit 948a23e6bb)
2020-04-16 07:55:40 +02:00
Ondřej Surý
820b9ba38a Set WarningLevel to Level1 for Release, treat warnings as errors
Our vcxproj files set the WarningLevel to Level3, which is too verbose
for a code that needs to be portable.  That basically leads to ignoring
all the errors that MSVC produces.  This commits downgrades the
WarningLevel to Level1 and enables treating warnings as errors for
Release builds.  For the Debug builds the WarningLevel got upgraded to
Level4, and treating warnings as errors is explicitly disabled.

We should eventually make the code clean of all MSVC warnings, but it's
a long way to go for Level4, so it's more reasonable to start at Level1.

For reference[1], these are the warning levels as described by MSVC
documentation:

  * /W0 suppresses all warnings. It's equivalent to /w.
  * /W1 displays level 1 (severe) warnings. /W1 is the default setting
    in the command-line compiler.
  * /W2 displays level 1 and level 2 (significant) warnings.
  * /W3 displays level 1, level 2, and level 3 (production quality)
    warnings. /W3 is the default setting in the IDE.
  * /W4 displays level 1, level 2, and level 3 warnings, and all level 4
    (informational) warnings that aren't off by default. We recommend
    that you use this option to provide lint-like warnings. For a new
    project, it may be best to use /W4 in all compilations. This option
    helps ensure the fewest possible hard-to-find code defects.
  * /Wall displays all warnings displayed by /W4 and all other warnings
    that /W4 doesn't include — for example, warnings that are off by
    default.
  * /WX treats all compiler warnings as errors. For a new project, it
    may be best to use /WX in all compilations; resolving all warnings
    ensures the fewest possible hard-to-find code defects.

1. https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level?view=vs-2019

(cherry picked from commit 789d253e3d)
2020-04-16 07:55:40 +02:00
Michał Kępień
aab746701e Merge branch 'michal/fix-srcid-on-windows-v9_16' into 'v9_16'
[v9_16] Fix "srcid" on Windows

See merge request isc-projects/bind9!3371
2020-04-15 09:42:13 +00:00
Michał Kępień
021b83059e Fix "srcid" on Windows
Windows BIND releases produced by GitLab CI are built from Git
repositories, not from release tarballs, which means the "srcid" file is
not present in the top source directory when MSBuild is invoked.  This
causes the Git commit hash for such builds to be set to "unset_id".
Enable win32utils/Configure to try determining the commit hash for a
build by invoking Git on the build host if the "srcid" file is not
present (which is what its Unix counterpart does).

(cherry picked from commit 05e13e7caf)
2020-04-15 11:39:45 +02:00
Ondřej Surý
b0ca52f211 Merge branch 'ondrej/add-missing-time.h-on-win32-v9_16' into 'v9_16'
Add missing time.h header in windows isc/time.h for missing prototypes

See merge request isc-projects/bind9!3370
2020-04-15 08:43:45 +00:00
Ondřej Surý
ff967f9d65 Add missing time.h header in windows isc/time.h for missing prototypes
The win32 isc/time.h was missing <time.h> header leading to:

    lib\isc\win32\include\isc\time.h(29): warning C4013: 'gmtime_s'
    undefined; assuming extern returning int (compiling source file
    ..\app.c) [lib\isc\win32\libisc.vcxproj]

    lib\isc\win32\include\isc\time.h(39): warning C4013: 'localtime_s'
    undefined; assuming extern returning int (compiling source file
    ..\app.c) [lib\isc\win32\libisc.vcxproj]

(cherry picked from commit b9f68d098b)
2020-04-15 10:18:42 +02:00
Ondřej Surý
58201570c1 Merge branch 'ondrej/add-python-static-analysis-to-gitlab-ci-v9_16' into 'v9_16'
Add python static analysis to GitLab CI (v9.16)

See merge request isc-projects/bind9!3366
2020-04-15 07:48:01 +00:00
Ondřej Surý
4c4af11e5b Make the python code pylint and flake8 compliant
(cherry picked from commit 1e4ff9d485)
2020-04-15 07:43:35 +02:00
Ondřej Surý
4586a10327 Add pylint and flake8 tests to GitLab CI
Our python code didn't adhere to any coding standard.  In this commit, we add
flame8 (https://pypi.org/project/flake8/), and pylint (https://www.pylint.org/).

There's couple of exceptions:

- ans.py scripts are not checked, nor fixed as part of this MR
- pylint's missing-*-docstring and duplicate-code checks have
  been disabled via .pylintrc

Both exceptions should be removed in due time.

(cherry picked from commit ee534592e3)
2020-04-15 07:43:35 +02:00
Michał Kępień
e69c9b7fb9 Merge branch 'michal/misc-doc-fixes-v9_16' into 'v9_16'
[v9_16] Miscellaneous documentation fixes

See merge request isc-projects/bind9!3361
2020-04-09 05:50:04 +00:00
Stephen Morris
2b79ffb29c Tweak release notes for BIND 9.16.2 2020-04-08 22:49:00 +02:00
Michał Kępień
aeb1eb20e8 Tweak CHANGES for BIND 9.16.2 2020-04-08 22:49:00 +02:00
Ondřej Surý
2c0adf7e5a Merge branch 'bug/master/libisc-link-v9_16' into 'v9_16'
Link all required libraries to libisc

See merge request isc-projects/bind9!3360
2020-04-08 15:13:10 +00:00
Petr Menšík
ad79e7c080 Link all required libraries to libisc
It would fail to link -lisc without additional libraries, which should
not be required.

(cherry picked from commit 4cc7d2412f)
2020-04-08 17:03:27 +02:00
Ondřej Surý
e11d690ae7 Merge branch 'ondrej/changes-notes-v9_16-v9_16' into 'v9_16'
Add missing CHANGES notes from v9_16 branch

See merge request isc-projects/bind9!3358
2020-04-08 13:18:11 +00:00
Ondřej Surý
cb100ed530 Add missing CHANGES notes from v9_16 branch
(cherry picked from commit 2ef1149519)
2020-04-08 15:11:07 +02:00
Ondřej Surý
d42318d1ef Merge branch 'ondrej/missing-changes-v9_11-v9_16' into 'v9_16'
Add missing CHANGES notes from v9_11 branch

See merge request isc-projects/bind9!3353
2020-04-08 12:47:49 +00:00
Ondřej Surý
9777aab8ce Add missing CHANGES notes from v9_11 branch
(cherry picked from commit 434929b53d)
2020-04-08 14:46:07 +02:00
Michał Kępień
cc19294ac3 Merge branch '1742-work-around-an-msvc-bug-v9_16' into 'v9_16'
[v9_16] Work around an MSVC bug

See merge request isc-projects/bind9!3351
2020-04-08 12:30:18 +00:00
Michał Kępień
5b32f7362c Work around an MSVC bug
The assembly code generated by MSVC for at least some signed comparisons
involving atomic variables incorrectly uses unsigned conditional jumps
instead of signed ones.  In particular, the checks in isc_log_wouldlog()
are affected in a way which breaks logging on Windows and thus also all
system tests involving a named instance.  Work around the issue by
assigning the values returned by atomic_load_acquire() calls in
isc_log_wouldlog() to local variables before performing comparisons.

(cherry picked from commit 4c4f5cccaa)
2020-04-08 14:29:22 +02:00
Matthijs Mekking
83dcb7417b Merge branch '1669-kasp-test-fails-on-windows-v9_16' into 'v9_16'
Resolve ""kasp" system test is failing consistently on Windows"

See merge request isc-projects/bind9!3340
2020-04-08 08:44:56 +00:00
Matthijs Mekking
0d050323c0 Increase migrate.kasp DNSKEY TTL
Increate the DNSKEY TTL of the migrate.kasp zone for the following
reason:  The key states are initialized depending on the timing
metadata. If a key is present long enough in the zone it will be
initialized to OMNIPRESENT.  Long enough here is the time when it
was published (when the setup script was run) plus DNSKEY TTL.
Otherwise it is set to RUMOURED, or to HIDDEN if no timing metadata
is set or the time is still in the future.

Since the TTL is "only" 5 minutes, the DNSKEY state may be
initialized to OMNIPRESENT if the test is slow, but we expect it
to be in RUMOURED state.  If we increase the TTL to a couple of
hours it is very unlikely that it will be initialized to something
else than RUMOURED.

(cherry picked from commit 04e6711029)
2020-04-08 09:47:36 +02:00
Matthijs Mekking
02a2de8adb Fix ns6 template zonefile
The template zone file for server ns6 should have the ns6 domain
name, not ns3.

(cherry picked from commit 8d3c0156f4)
2020-04-08 09:47:36 +02:00
Matthijs Mekking
c923532b77 Remove kasp Windows prereq check
Now that the timing issue is fixed, we can enable the kasp test
again on Windows.

(cherry picked from commit 87c05fa62f)
2020-04-08 09:47:36 +02:00
Matthijs Mekking
9b57ad68d4 Fix kasp timing issue on Windows
This fixes another intermittent failure in the kasp system test.
It does not happen often, except for in the Windows platform tests
where it takes a long time to run the tests.

In the "kasp" system test, there is an "rndc reconfig" call which
triggers a new rekey event.  check_next_key_event() verifies the time
remaining from the moment "rndc reconfig" is called until the next key
event.  However, the next key event time is calculated from the key
times provided during key creation (i.e. during test setup).  Given
this, if "rndc reconfig" is called a significant amount of time after
the test is started, some check_next_key_event() checks will fail.

Fix by calculating the time passed since the start of the test and
when 'rndc reconfig' happens.  Substract this time from the
calculated next key event.

This only needs to be done after an "rndc reconfig" on zones where
the keymgr needs to wait for a period of time (for example for keys
to become OMNIPRESENT, or HIDDEN). This is on step 2 and step 5 of
the algorithm rollover.  In step 2 there is a waiting period before
the DNSKEY is OMNIPRESENT, in step 5 there is a waiting period
before the DNSKEY is HIDDEN.

In step 1 new keys are created, in step 3 and 4 key states just
entered OMNIPRESENT, and in step 6 we no longer care because the
key lifetime is unlimited and we default to checking once per hour.

Regardless of our indifference about the next key event after step 6,
change some of the key timings in the setup script to better
reflect reality: DNSKEY is in HIDDEN after step 5, DS times have
changed when the new DS became active.

(cherry picked from commit 62a97570b8)
2020-04-08 09:47:32 +02:00
Ondřej Surý
81259f8c18 Merge branch '1574-confidential-issue-rebinding-protection-fail-in-forwarding-mode-v9_16' into 'v9_16'
Resolve "DNS rebinding protection is ineffective when BIND is configured as a forwarding DNS server"

See merge request isc-projects/bind9!3343
2020-04-08 07:44:52 +00:00
Ondřej Surý
48110357ac Add release notes 2020-04-08 09:43:41 +02:00
Ondřej Surý
d092db3465 Add CHANGES 2020-04-08 09:43:41 +02:00
Diego Fronza
2cba24a6d5 Add test for the proposed fix
This test asserts that option "deny-answer-aliases" works correctly
when forwarding requests.

As a matter of example, the behavior expected for a forwarder BIND
instance, having an option such as deny-answer-aliases { "domain"; }
is that when forwarding a request for *.anything-but-domain, it is
expected that it will return SERVFAIL if any answer received has a CNAME
for "*.domain".

(cherry picked from commit 9bdb960a16a69997b08746e698b6b02c8dc6c795)
2020-04-08 08:52:58 +02:00