Commit Graph

894 Commits

Author SHA1 Message Date
Witold Kręcicki
e92d5421c3 Fallback to normal procedure if creating of ixfr-from-differences fails
(cherry picked from commit b1254430df)
2018-06-27 18:33:33 -07:00
Witold Kręcicki
1919f5c937 Fix some issues with large journal entries
(cherry picked from commit 0db7130f2b)
2018-06-27 18:33:32 -07:00
Michał Kępień
2c09f7a06c Reimplement all zone logging functions using dns_zone_logv()
In order to decrease code duplication, express the logic contained in
all zone logging functions using dns_zone_logv() calls.

(cherry picked from commit 5c03cd339e)
2018-06-11 12:50:25 +02:00
Michał Kępień
4fab6fec76 Add dns_zone_logv()
Add a new libdns function, dns_zone_logv(), which takes a single va_list
argument rather than a variable number of arguments and can be used as a
base for implementing more specific zone logging functions.

(cherry picked from commit bb2dfb3f49)
2018-06-11 12:50:25 +02:00
Evan Hunt
7a00ce2e77 ensure we try to validate glue records so RRSIG TTLs will be capped 2018-06-08 11:41:48 -07:00
Witold Kręcicki
9b17be187f Don't fetch DNSKEY when fuzzing resolver
(cherry picked from commit cb3208aa43)
2018-06-06 15:27:27 +02:00
Mark Andrews
dd05287a31 add support -T sigvalinsecs
(cherry picked from commit 87a3dc8ab9)
(cherry picked from commit 69340b5ac5)
2018-06-06 17:17:48 +10:00
Mark Andrews
298372d8d2 only sign with other keys when deleting a key if there are not already existing signature for the deleted algorithm
(cherry picked from commit 0667bf7ae7)
(cherry picked from commit c1e342cedb)
2018-06-06 17:10:01 +10:00
Michał Kępień
a6be59ce08 Move find_zone_keys() to lib/dns/zone_p.h
Rename find_zone_keys() to dns__zone_findkeys() and move it to
lib/dns/zone_p.h, so that it can be used in unit tests.  Add a comment
describing the purpose of this function.

(cherry picked from commit d7143986b1)
(cherry picked from commit fc0e99c7d7)
2018-05-10 00:04:14 -07:00
Michał Kępień
5c71a025c6 Move update_sigs() to lib/dns/zone_p.h
Rename update_sigs() to dns__zone_updatesigs() and move it to
lib/dns/zone_p.h, so that it can be unit tested.  Add a comment
describing the purpose of this function.

(cherry picked from commit b1947cee82)
(cherry picked from commit 4d06f50ba8)
2018-05-10 00:04:12 -07:00
Michał Kępień
5712d9528f Move zonediff_t to lib/dns/zone_p.h
Rename zonediff_t to dns__zonediff_t and move it to lib/dns/zone_p.h, so
that unit tests can be written for functions taking pointers to
structures of this type as arguments.

(cherry picked from commit ace465a9f9)
(cherry picked from commit ea15c54d8a)
2018-05-10 00:03:16 -07:00
Michał Kępień
536d6dc0c5 Add lib/dns/zone_p.h
Add a new private header file, lib/dns/zone_p.h, which will hold type
definitions and function prototypes not meant to be exported by libdns,
but required by zone-related unit tests.

(cherry picked from commit c1bc3be806)
(cherry picked from commit 2b0add6d1a)
2018-05-10 00:03:16 -07:00
Michał Kępień
911836509e Apply raw zone deltas to yet unsigned secure zones
When inline signing is enabled for a zone without creating signing keys
for it, changes subsequently applied to the raw zone will not be
reflected in the secure zone due to the dns_update_signaturesinc() call
inside receive_secure_serial() failing.  Given that an inline zone will
be served (without any signatures) even with no associated signing keys
being present, keep applying raw zone deltas to the secure zone until
keys become available in an attempt to follow the principle of least
astonishment.

(cherry picked from commit 6acf326969)
(cherry picked from commit 8a58a60772)
2018-04-25 12:09:53 -07:00
Michał Kępień
4ba247818c Only log bumped signed serial after a successful secure zone update
If a raw zone is modified, but the dns_update_signaturesinc() call in
receive_secure_serial() fails, the corresponding secure zone's database
will not be modified, even though by that time a message containing the
bumped signed serial will already have been logged.  This creates
confusion, because a different secure zone version will be served than
the one announced in the logs.  Move the relevant dns_zone_log() call so
that it is only performed if the secure zone's database is modified.

(cherry picked from commit cfbc8e264d)
(cherry picked from commit cdc7ab42b1)
2018-04-25 12:09:53 -07:00
Michał Kępień
ecea678dac Use dns_fixedname_initname() where possible
Replace dns_fixedname_init() calls followed by dns_fixedname_name()
calls with calls to dns_fixedname_initname() where it is possible
without affecting current behavior and/or performance.

This patch was mostly prepared using Coccinelle and the following
semantic patch:

    @@
    expression fixedname, name;
    @@
    -	dns_fixedname_init(&fixedname);
    	...
    -	name = dns_fixedname_name(&fixedname);
    +	name = dns_fixedname_initname(&fixedname);

The resulting set of changes was then manually reviewed to exclude false
positives and apply minor tweaks.

It is likely that more occurrences of this pattern can be refactored in
an identical way.  This commit only takes care of the low-hanging fruit.

(cherry picked from commit 4df4a8e731)
(cherry picked from commit 0041aeb751)
2018-04-10 13:26:23 -07:00
Evan Hunt
8b205089b7 update file headers to remove copyright years 2018-03-14 16:40:20 -07:00
Mark Andrews
2c53a82644 update the sscanf format strings so they match the pointer types
(cherry picked from commit 70d192eb97)
2018-02-26 10:40:10 +11:00
Michał Kępień
5c080dfe73 Do not recheck DNS_ZONEFLG_LOADPENDING in zone_asyncload()
Remove a block of code which dates back to commit 8a2ab2b920, when
dns_zone_asyncload() did not yet check DNS_ZONEFLG_LOADPENDING.
Currently, no race in accessing DNS_ZONEFLG_LOADPENDING is possible any
more, because:

  - dns_zone_asyncload() is still the only function which may queue
    zone_asyncload(),

  - dns_zone_asyncload() accesses DNS_ZONEFLG_LOADPENDING under a lock
    (and potentially queues an event under the same lock),

  - DNS_ZONEFLG_LOADPENDING is not cleared until the load actually
    completes.

Thus, the rechecking code can be safely removed from zone_asyncload().

Note that this also brings zone_asyncload() to a state in which the
completion callback is always invoked.  This is required to prevent
leaking memory in case something goes wrong in zone_asyncload() and a
zone table the zone belongs to is indefinitely left with a positive
reference count.
2018-02-16 08:58:24 +01:00
Michał Kępień
4d391101a4 Asynchronous zone load events have no way of getting canceled
Code handling cancellation of asynchronous zone load events was likely
copied over from other functions when asynchronous zone loading was
first implemented in commit 8a2ab2b920.  However, unlike those other
functions, asynchronous zone loading events currently have no way of
getting canceled once they get posted, which means the aforementioned
code is effectively dead.  Remove it to prevent confusion.
2018-02-16 08:58:24 +01:00
Michał Kępień
749b3cacfc Only clear DNS_ZONEFLG_LOADPENDING in zone_asyncload() if zone loading is completed immediately
zone_load() is not always synchronous, it may only initiate an
asynchronous load and return DNS_R_CONTINUE, which means zone loading
has not yet been completed.  In such a case, zone_asyncload() must not
clear DNS_ZONEFLG_LOADPENDING immediately and leave that up to
zone_postload().
2018-02-16 08:58:24 +01:00
Michał Kępień
e0205aac03 Lock zone before checking whether its asynchronous load is already pending
While this is not an issue in named, which only calls
dns_zone_asyncload() from task-exclusive mode, this function is exported
by libdns and thus may in theory be concurrently called for the same
zone by multiple threads.  It also does not hurt to be consistent
locking-wise with other DNS_ZONEFLG_LOADPENDING accesses.
2018-02-16 08:58:24 +01:00
Mark Andrews
7cbac360bf 4874. [bug] Wrong time display when reporting new keywarntime.
[RT #47042]

(cherry picked from commit 83d005de61)
2018-01-24 08:00:30 +11:00
Mukund Sivaraman
929329d2d6 Fix various bugs reported by valgrind --tool=memcheck (#46978)
(cherry picked from commit f96133826e)
(cherry picked from commit 0374e1c3fd)
2018-01-13 11:47:46 +05:30
Tinderbox User
d2017ba188 update copyright notice / whitespace 2018-01-03 23:46:13 +00:00
Mark Andrews
33506bef10 missing newline in comment
(cherry picked from commit 7258b852cf)
2018-01-03 17:11:50 +11:00
Mark Andrews
e01ef6f01c 4839. [bug] zone.c:zone_sign was not properly determining
if there were active KSK and ZSK keys for
                        a algorithm when update-check-ksk is true
                        (default) leaving records unsigned with one or
                        more DNSKEY algorithms. [RT #46774]

(cherry picked from commit 00f5ea91cf)
2017-12-05 16:11:53 +11:00
Mark Andrews
677f507de7 4838. [bug] zone.c:add_sigs was not properly determining
if there were active KSK and ZSK keys for
                        a algorithm when update-check-ksk is true
                        (default) leaving records unsigned with one or
                        more DNSKEY algorithms. [RT #46754]

(cherry picked from commit 6fa2a0691e)
2017-12-05 09:32:50 +11:00
Mark Andrews
64d7fa3ec4 4833. [bug] isc_event_free should check that the event is not
linked when called. [RT #46725]

4832.   [bug]           Events were not being removed from zone->rss_events.
                        [RT #46725]

(cherry picked from commit 9ddf7d6c4c)
2017-11-30 10:38:46 +11:00
Michał Kępień
57b1d64d9a [v9_11] Prevent bogus warning from being logged
4825.	[bug]		Prevent a bogus "error during managed-keys processing
			(no more)" warning from being logged. [RT #46645]

(cherry picked from commit 165df18f75)
2017-11-23 09:37:08 +01:00
Mark Andrews
86d2f9abc8 4821. [bug] When resigning ensure that the SOA's expire time is
always later that the resigning time of other records.
                        [RT #46473]

4820.   [bug]           dns_db_subtractrdataset should transfer the resigning
                        information to the new header. [RT #46473]

4819.   [bug]           Fully backout the transaction when adding a RRset
                        to the resigning / removal heaps fail. [RT #46473]

(cherry picked from commit 656eed7c9b)
2017-11-18 07:21:28 +11:00
Michał Kępień
eeb919b6f5 [v9_11] Minor improvements to code handling managed keys
4812.	[bug]		Minor improvements to stability and consistency of code
			handling managed keys. [RT #46468]

(cherry picked from commit 312c84c73a)
2017-11-09 15:19:32 +01:00
Michał Kępień
79d54c20ad [v9_11] Prevent junk from being logged when using "also-notify { <ip> key <keyname>; };"
(cherry picked from commit 4034b098d8)
2017-11-08 09:22:01 +01:00
Michał Kępień
4b669b69ba [v9_11] Backport fix for RT #46055 and mkeys system test improvements
4803.   [bug]		Backport parts of RT #45293 and RT #46267, specifically
			the fix for RT #46055 and mkeys system test
			improvements. [RT #46430]
2017-10-31 06:06:07 +01:00
Michał Kępień
5e1ca7a326 [v9_11] Rename nsec3param_salt_totext() to dns_nsec3param_salttotext(), make it public, add unit tests
4786.	[cleanup]	Turn nsec3param_salt_totext() into a public function,
			dns_nsec3param_salttotext(), and add unit tests for it.
			[RT #46289]

(cherry picked from commit 910a01550a)
2017-10-25 09:50:33 +02:00
Evan Hunt
5d7d67f82a [v9_11] ignore cache when sending 5011 refresh queries
4771.	[bug]		When sending RFC 5011 refresh queries, disregard
			cached DNSKEY rrsets. [RT #46251]

(cherry picked from commit b2597ce86b)
2017-10-11 14:24:52 -07:00
Mark Andrews
2732d4922c 4754. [bug] dns_zone_setview needs a two stage commit to properly
handle errors. [RT #45841]
2017-10-05 13:41:49 +11:00
Mark Andrews
2e10e64586 cast to unsigned int
(cherry picked from commit 34efd9ad93)
2017-10-05 13:34:24 +11:00
Michał Kępień
5a8f2f0cd6 [v9_11] Comment NSEC3-related code and fix a few minor issues
4736.	[cleanup]	(a) Added comments to NSEC3-related functions in
			lib/dns/zone.c.  (b) Refactored NSEC3 salt formatting
			code.  (c) Minor tweaks to lock and result handling.
			[RT #46053]

(cherry picked from commit acc3728c47)
2017-09-26 11:28:38 +02:00
Michał Kępień
62f2fefaec [v9_11] Prevent possible infinite signing loop after retransferring an inline-signed slave using NSEC3
4727.	[bug]		Retransferring an inline-signed slave using NSEC3
			around the time its NSEC3 salt was changed could result
			in an infinite signing loop. [RT #45080]

(cherry picked from commit f665c724e4)
2017-09-18 09:23:18 +02:00
Mark Andrews
5a93d3be4e more str{n}{cat,cpy} corrections rt45981_stage2
(cherry picked from commit cb629cdeda)
2017-09-14 18:33:02 +10:00
Evan Hunt
41621724af [v9_11] cast char * 2017-09-13 22:04:08 -07:00
Evan Hunt
4c2dd50d64 [v9_11] clean up bufsize errors
(cherry picked from commit 9b729a06b0)
2017-09-13 21:19:11 -07:00
Evan Hunt
7cd594b842 [master] cleanup strcat/strcpy
4722.	[cleanup]	Clean up uses of strcpy() and strcat() in favor of
			strlcpy() and strlcat() for safety. [RT #45981]

(cherry picked from commit 114f95089c)
2017-09-13 00:17:16 -07:00
Mark Andrews
abcea74291 4682. [bug] Don't report errors on records below a DNAME.
[RT #44880]

(cherry picked from commit 615b961e02)
2017-08-17 15:51:22 +10:00
Evan Hunt
7dbeb5e7f0 [v9_11] silence gcc 7 warnings
4673.	[port]		Silence GCC 7 warnings. [RT #45592]

(cherry picked from commit cdacec1dcb)
2017-08-09 00:24:16 -07:00
Evan Hunt
fe6d2fd833 [v9_11] race condition when reloading while resigning
4661.	[bug]		A race condition could occur if a zone was reloaded
			while resigning, triggering a crash in
			rbtdb.c:closeversion(). [RT #45276]

(cherry picked from commit 036305f00d)
2017-07-28 00:02:47 -07:00
Mark Andrews
bfde61d519 4654. [cleanup] Don't use C++ keywords delete, new and namespace.
[RT #45538]

(cherry picked from commit 4bf32aa587)
2017-07-21 12:28:58 +10:00
Evan Hunt
d315545e6d [v9_11] enhanced rfc 5011 logging
4642.	[cleanup]	Add more logging of RFC 5011 events affecting the
			status of managed keys: newly observed keys,
			deletion of revoked keys, etc. [RT #45354]

(cherry picked from commit 0d90835d2a)
2017-06-27 10:50:29 -07:00
Mark Andrews
fd0d60b3a0 4587. [bug] named-checkzone failed to handle occulted data below
DNAMEs correctly. [RT #44877]

(cherry picked from commit 600b027731)
2017-04-20 13:29:53 +10:00
Mark Andrews
da23e32e41 4563. [bug] Modified zones would occasionally fail to reload.
[RT #39424]

(cherry picked from commit dfe3068ef3)
2017-02-02 17:14:09 +11:00