mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Handle unknown DS hash algos correctly.
When we can validate a DS RRset, but don't speak the hash algo it contains, treat that the same as an NSEC/3 proving that the DS doesn't exist. 4025 5.2
This commit is contained in:
13
src/dnssec.c
13
src/dnssec.c
@@ -1005,6 +1005,19 @@ int dnssec_validate_by_ds(time_t now, struct dns_header *header, size_t plen, ch
|
||||
if (crecp->flags & F_NEG)
|
||||
return STAT_INSECURE_DS;
|
||||
|
||||
/* 4035 5.2
|
||||
If the validator does not support any of the algorithms listed in an
|
||||
authenticated DS RRset, then the resolver has no supported
|
||||
authentication path leading from the parent to the child. The
|
||||
resolver should treat this case as it would the case of an
|
||||
authenticated NSEC RRset proving that no DS RRset exists, */
|
||||
for (recp1 = crecp; recp1; recp1 = cache_find_by_name(recp1, name, now, F_DS))
|
||||
if (hash_find(ds_digest_name(recp1->addr.ds.digest)))
|
||||
break;
|
||||
|
||||
if (!recp1)
|
||||
return STAT_INSECURE_DS;
|
||||
|
||||
/* NOTE, we need to find ONE DNSKEY which matches the DS */
|
||||
for (valid = 0, j = ntohs(header->ancount); j != 0 && !valid; j--)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user