isc_region_t r;
u_char rdatabuf[DST_KEY_MAXSIZE];
- INSIST(rdatalist != NULL);
+ if (rdatalist == NULL) {
+ fatal("bad KSR file %s(%lu): DNSKEY record "
+ "before ';; KeySigningRequest' header",
+ ksr->file, isc_lex_getsourceline(lex));
+ }
rdata = isc_mem_get(isc_g_mctx, sizeof(*rdata));
dns_rdata_init(rdata);
isc_buffer_usedregion(newbuf, &r);
dns_rdata_fromregion(rdata, dns_rdataclass_in,
dns_rdatatype_dnskey, &r);
- if (rdatalist != NULL && ttl < rdatalist->ttl) {
+ if (ttl < rdatalist->ttl) {
rdatalist->ttl = ttl;
}
)
assert "dnssec-ksr: fatal: 'sign' requires a KSR file" in cmd.err
+ # check that 'dnssec-ksr sign' rejects a KSR whose first record
+ # is a DNSKEY without a preceding ';; KeySigningRequest' header,
+ # rather than aborting on an INSIST assertion
+ bad_ksr = "common.test.bad.ksr"
+ with open(bad_ksr, "w", encoding="utf-8") as f:
+ f.write(". 3600 IN DNSKEY 257 3 8 AwEAAa==\n")
+ cmd = ksr(
+ "common.test",
+ "common",
+ "sign",
+ options=f"-K ns1/offline -f {bad_ksr} -i now -e +1y",
+ raise_on_exception=False,
+ )
+ assert cmd.rc == 1
+ assert "DNSKEY record before ';; KeySigningRequest' header" in cmd.err
+
def test_ksr_common(ns1):
# common test cases (1)