mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-22 10:10:14 -04:00
rdata_covers() in lib/dns/diff.c tests `type == dns_rdatatype_rrsig` instead of dns_rdatatype_issig(), so for a legacy SIG (24) rdata it returns 0 and the covered type is discarded on the dynamic-update / IXFR path. The zone DB then files every SIG rdataset under typepair (SIG, 0) instead of (SIG, covered_type), and a follow-up add with a different covers field but a different TTL collides at that bucket, trips DNS_DBADD_EXACTTTL in qpzone, returns DNS_R_NOTEXACT, and comes back to the client as SERVFAIL. The new test adds a PTR to establish the node (tcp-self requires the client IP's reverse form to equal the owner), then two SIG updates with different covers and different TTLs; on a buggy build the second update is SERVFAIL and named logs `dns_diff_apply: .../SIG/IN: add not exact`. The test is expected to pass once rdata_covers() is switched to dns_rdatatype_issig(), matching the fix already adopted for dns__db_findrdataset() on this branch and the helper pattern used in master.c, xfrout.c, and qpcache.c. |
||
|---|---|---|
| .. | ||
| check | ||
| confgen | ||
| delv | ||
| dig | ||
| dnssec | ||
| include | ||
| named | ||
| nsupdate | ||
| plugins | ||
| rndc | ||
| tests | ||
| tools | ||
| meson.build | ||