to Qifan Zhang, Palo Alto Networks for the report.
- Fix negative cache to work with NSEC3 records without salt.
Thanks to Xin Wang, Jiapeng Li, and Jiajia Liu, Northwestern
Polytechnical University, for the report.
+ - Fix parse of svcbparam ech, it had incorrect length. Thanks
+ to Qifan Zhang, Palo Alto Networks for the report.
3 June 2026: Yorgos
- Fix const as reported by newest compiler warnings.
return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL;
sldns_write_uint16(rd, SVCB_KEY_ECH);
sldns_write_uint16(rd + 2, 0);
+ *rd_len = 4;
return LDNS_WIREPARSE_ERR_OK;
}
unit_assert(result == -1);
}
+/** test SVCB ech svcparam */
+static void
+svcb_ech_test(void)
+{
+ uint8_t rr[LDNS_RR_BUF_SIZE];
+ size_t rr_len = sizeof(rr), dname_len = 0;
+ int e = sldns_str2wire_rr_buf("x. 300 IN HTTPS 1 . ech=0",
+ rr, &rr_len, &dname_len, 300, NULL, 0, NULL, 0);
+ unit_assert(e == LDNS_WIREPARSE_ERR_OK);
+ unit_assert(rr_len == dname_len + 10 /* type,class,ttl,rdatalen */ + 7 /* rdata */);
+ unit_assert(sldns_read_uint16(rr + dname_len + 8 /* rdlen */) == 7);
+}
+
void
ldns_test(void)
{
unit_show_feature("sldns");
rr_tests();
b64_test();
+ svcb_ech_test();
}
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcd}{!abcd}{?dns}
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?abcdabcd?dns?defedf}
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-queryéè{?dns}
+
+; The ech=0 convenience entry for empty ech list
+echempty SVCB 0 . ech=0
+echempty SVCB 0 h2. ech
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?abcd}{!abcd}{?dns}"
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?abcdabcd?dns?defedf}"
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query\195\169\195\168{?dns}"
+echempty.success-cases. 7200 IN SVCB 0 . ech
+echempty.success-cases. 7200 IN SVCB 0 h2. ech