mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
implement @gthess' review comments; fix check on compulsory text and add tests
This commit is contained in:
parent
8d939691a3
commit
f3fa363443
5 changed files with 29 additions and 3 deletions
|
|
@ -1525,6 +1525,7 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val,
|
||||||
uint8_t* rd, size_t* rd_len)
|
uint8_t* rd, size_t* rd_len)
|
||||||
{
|
{
|
||||||
size_t val_len;
|
size_t val_len;
|
||||||
|
char* open_bracket, * close_bracket, * expr_ptr;
|
||||||
|
|
||||||
/* RFC6570#section-2.1
|
/* RFC6570#section-2.1
|
||||||
* "The characters outside of expressions in a URI Template string are
|
* "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
|
/* draft-ietf-add-svcb-dns-06#section-5.1
|
||||||
* The URI Template MUST contain a "dns" variable
|
* The URI Template MUST contain a "dns" variable
|
||||||
*/
|
*/
|
||||||
if (!(strstr(val, "?dns"))) {
|
open_bracket = strchr(val, '{');
|
||||||
return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH;
|
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);
|
sldns_write_uint16(rd, SVCB_KEY_DOHPATH);
|
||||||
|
|
|
||||||
8
testdata/svcb.tdir/svcb.failure-cases-05
vendored
Normal file
8
testdata/svcb.tdir/svcb.failure-cases-05
vendored
Normal 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}
|
||||||
1
testdata/svcb.tdir/svcb.success-cases.zone
vendored
1
testdata/svcb.tdir/svcb.success-cases.zone
vendored
|
|
@ -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}
|
_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}
|
||||||
|
|
|
||||||
|
|
@ -9,4 +9,5 @@ s07.success-cases. 3600 IN HTTPS 0 . ech="aGVsbG93b3JsZCE="
|
||||||
s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a"
|
s08.success-cases. 3600 IN HTTPS 0 . key11="a" key12="a" key13="a" key14="a" key15="a" key16="a" key17="a" key18="a" key19="a" key110="a" key111="a" key112="a" key113="a" key114="a" key115="a" key116="a" key117="a" key118="a" key119="a" key120="a" key121="a" key122="a" key123="a" key124="a" key125="a" key126="a" key127="a" key128="a" key129="a" key130="a" key131="a" key132="a" key133="a" key134="a" key135="a" key136="a" key137="a" key138="a" key139="a" key140="a" key141="a" key142="a" key143="a" key144="a" key145="a" key146="a" key147="a" key148="a" key149="a" key150="a" key151="a" key152="a" key153="a" key154="a" key155="a" key156="a" key157="a" key158="a" key159="a" key160="a" key161="a" key162="a" key163="a"
|
||||||
s09.success-cases. 3600 IN HTTPS 0 . alpn="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
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{?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}"
|
||||||
|
|
|
||||||
6
testdata/svcb.tdir/svcb.test
vendored
6
testdata/svcb.tdir/svcb.test
vendored
|
|
@ -75,6 +75,12 @@ then
|
||||||
echo "Failure case 04: 256 is too many characters for an alpn; maximum is 255"
|
echo "Failure case 04: 256 is too many characters for an alpn; maximum is 255"
|
||||||
echo "Incorrectly succeeded"
|
echo "Incorrectly succeeded"
|
||||||
exit 1
|
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
|
else
|
||||||
echo "All failure cases test successfully"
|
echo "All failure cases test successfully"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue