mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
Return INSECURE when validation fails with proved non-existent DS.
This commit is contained in:
14
src/dnssec.c
14
src/dnssec.c
@@ -1072,10 +1072,10 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char
|
|||||||
GETSHORT(qtype, p);
|
GETSHORT(qtype, p);
|
||||||
GETSHORT(qclass, p);
|
GETSHORT(qclass, p);
|
||||||
|
|
||||||
if (qtype != T_DS || qclass != class || ntohs(header->ancount) == 0)
|
if (qtype != T_DS || qclass != class)
|
||||||
return STAT_BOGUS;
|
val = STAT_BOGUS;
|
||||||
|
else
|
||||||
val = dnssec_validate_reply(now, header, plen, name, keyname, NULL);
|
val = dnssec_validate_reply(now, header, plen, name, keyname, NULL);
|
||||||
|
|
||||||
if (val == STAT_BOGUS)
|
if (val == STAT_BOGUS)
|
||||||
{
|
{
|
||||||
@@ -1083,7 +1083,11 @@ int dnssec_validate_ds(time_t now, struct dns_header *header, size_t plen, char
|
|||||||
extract_name(header, plen, &p, name, 1, 4);
|
extract_name(header, plen, &p, name, 1, 4);
|
||||||
log_query(F_UPSTREAM, name, NULL, "BOGUS DS");
|
log_query(F_UPSTREAM, name, NULL, "BOGUS DS");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* proved that no DS exists, can't validate */
|
||||||
|
if (val == STAT_SECURE && ntohs(header->ancount) == 0)
|
||||||
|
return STAT_INSECURE;
|
||||||
|
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user