implement @gthess' review comments; fix check on compulsory text and add tests

This commit is contained in:
TCY16 2022-08-24 12:38:08 +02:00
parent 8d939691a3
commit f3fa363443
5 changed files with 29 additions and 3 deletions

View file

@ -1525,6 +1525,7 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val,
uint8_t* rd, size_t* rd_len)
{
size_t val_len;
char* open_bracket, * close_bracket, * expr_ptr;
/* RFC6570#section-2.1
* "The characters outside of expressions in a URI Template string are
@ -1542,8 +1543,17 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val,
/* draft-ietf-add-svcb-dns-06#section-5.1
* The URI Template MUST contain a "dns" variable
*/
if (!(strstr(val, "?dns"))) {
open_bracket = strchr(val, '{');
close_bracket = strchr(val, '}');
if (!open_bracket && !close_bracket) {
return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH;
} else {
expr_ptr = strstr(open_bracket+1, "?dns");
if (!expr_ptr || !((close_bracket - expr_ptr) >= 4 ) ) {
return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH;
}
}
sldns_write_uint16(rd, SVCB_KEY_DOHPATH);

View file

@ -0,0 +1,8 @@
$ORIGIN failure-cases.
$TTL 3600
@ SOA primary admin 0 0 0 0 0
; Dohpath must have '?dns' in the URI template variable
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-query{?d}

View file

@ -50,3 +50,4 @@ s09 HTTPS 0 . ( alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
_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{?dns}
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn=h2 dohpath=/dns-queryéè{?dns}

View file

@ -10,3 +10,4 @@ s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key
s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
_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{?dns}"
_dns.doh.example. 7200 IN SVCB 1 doh.example. alpn="h2" dohpath="/dns-query\195\169\195\168{?dns}"

View file

@ -75,6 +75,12 @@ then
echo "Failure case 04: 256 is too many characters for an alpn; maximum is 255"
echo "Incorrectly succeeded"
exit 1
elif $PRE/readzone svcb.failure-cases-05
then
echo "Dohpath must have '?dns' in the URI template variable"
echo "Incorrectly succeeded"
exit 1
else
echo "All failure cases test successfully"
fi