mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
update foundname when detecting a zonecut above qname
an assertion could be triggered in the QPDB cache if a DNAME was found above a queried NS, because the 'foundname' value was not correctly updated to point to the zone cut. the same mistake existed in qpzone and has been fixed there as well.
This commit is contained in:
@@ -1702,6 +1702,8 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version,
|
|||||||
encloser, (void *)&search DNS__DB_FLARG_PASS);
|
encloser, (void *)&search DNS__DB_FLARG_PASS);
|
||||||
if (zcresult != DNS_R_CONTINUE) {
|
if (zcresult != DNS_R_CONTINUE) {
|
||||||
result = DNS_R_PARTIALMATCH;
|
result = DNS_R_PARTIALMATCH;
|
||||||
|
dns_qpchain_node(&search.chain, i, foundname,
|
||||||
|
NULL, NULL);
|
||||||
search.chain.len = i - 1;
|
search.chain.len = i - 1;
|
||||||
node = encloser;
|
node = encloser;
|
||||||
break;
|
break;
|
||||||
|
@@ -3453,6 +3453,8 @@ find(dns_db_t *db, const dns_name_t *name, dns_dbversion_t *version,
|
|||||||
tresult = check_zonecut(n, &search DNS__DB_FLARG_PASS);
|
tresult = check_zonecut(n, &search DNS__DB_FLARG_PASS);
|
||||||
if (tresult != DNS_R_CONTINUE) {
|
if (tresult != DNS_R_CONTINUE) {
|
||||||
result = tresult;
|
result = tresult;
|
||||||
|
dns_qpchain_node(&search.chain, i, foundname, NULL,
|
||||||
|
NULL);
|
||||||
search.chain.len = i - 1;
|
search.chain.len = i - 1;
|
||||||
node = n;
|
node = n;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user