- Fix parse of svcbparam ech, it had incorrect length. Thanks

to Qifan Zhang, Palo Alto Networks for the report.
This commit is contained in:
W.C.A. Wijngaards
2026-06-03 14:05:48 +02:00
parent 4544eaa4cc
commit d05eff4d54
5 changed files with 23 additions and 0 deletions
+2
View File
@@ -9,6 +9,8 @@
- 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.
+1
View File
@@ -1410,6 +1410,7 @@ sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd, size_t* rd_len)
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;
}
+14
View File
@@ -279,10 +279,24 @@ b64_test(void)
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();
}
+4
View File
@@ -59,3 +59,7 @@ _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath="/dns-query{?dns}"
_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
+2
View File
@@ -16,3 +16,5 @@ _dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query{?dns
_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