From: TCY16 Date: Fri, 28 Oct 2022 15:40:18 +0000 (+0200) Subject: remove value check X-Git-Tag: release-1.18.0rc1~24^2~18^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5bf4c505db86ef597528012272f834a5c553fddf;p=thirdparty%2Funbound.git remove value check --- diff --git a/sldns/str2wire.c b/sldns/str2wire.c index d210e6cd0..5633f5428 100644 --- a/sldns/str2wire.c +++ b/sldns/str2wire.c @@ -1525,9 +1525,6 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, uint8_t* rd, size_t* rd_len) { size_t val_len; - char* open_bracket, * close_bracket; - const char* next_char; - uint8_t expr_found = 0; /* RFC6570#section-2.1 * "The characters outside of expressions in a URI Template string are @@ -1542,39 +1539,6 @@ sldns_str2wire_svcbparam_dohpath_value(const char* val, return LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL; } - /* draft-ietf-add-svcb-dns-06#section-5.1 - * "The URI Template MUST contain a "dns" variable" - * A URI Template is alowed to have multiple variables - */ - next_char = val; - while (next_char && *next_char != '\0') { - char* c; - - open_bracket = strchr(next_char, '{'); - if (!open_bracket) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - break; - } - - close_bracket = strchr(open_bracket, '}'); - if (!close_bracket) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - - } - for (c = open_bracket+1; (close_bracket - c) >= 4; c++) { - if (c[0] == '?' && c[1] == 'd' && c[2] == 'n' - && c[3] == 's') { - expr_found++; - } - } - - next_char = close_bracket+1; - } - - if (expr_found != 1) { - return LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH; - } - sldns_write_uint16(rd, SVCB_KEY_DOHPATH); sldns_write_uint16(rd + 2, val_len); memcpy(rd + 4, val, val_len); diff --git a/sldns/str2wire.h b/sldns/str2wire.h index 18cfc4fa7..5e4d146d3 100644 --- a/sldns/str2wire.h +++ b/sldns/str2wire.h @@ -235,8 +235,7 @@ uint8_t* sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t dname_len); #define LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES 383 #define LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE 384 #define LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE 385 -#define LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH 386 -#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 387 +#define LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA 386 /** diff --git a/sldns/wire2str.c b/sldns/wire2str.c index 5bb13f03b..e6278ff56 100644 --- a/sldns/wire2str.c +++ b/sldns/wire2str.c @@ -171,8 +171,6 @@ static sldns_lookup_table sldns_wireparse_errors_data[] = { "Alpn strings need to be smaller than 255 chars"}, { LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE, "No-default-alpn should not have a value" }, - { LDNS_WIREPARSE_ERR_SVCB_NO_DNS_VAR_IN_DOHPATH, - "Dohpath must contain a correct URI template variable which contains '?dns'" }, { LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA, "General SVCParam error" }, { 0, NULL } @@ -1146,32 +1144,6 @@ static int sldns_wire2str_svcparam_ech2str(char** s, return w + size; } -static int sldns_wire2str_svcparam_dohpath2str(char** s, - size_t* slen, uint16_t data_len, uint8_t* data) -{ - int w = 0; - uint16_t i; - - assert(data_len > 0); /* Guaranteed by sldns_wire2str_svcparam_scan */ - - w += sldns_str_print(s, slen, "=\""); - - /* RC6570#section-2.1 specifies that the '\' (and other non-letter - * characters in the URI) are "intended to be copied literally" (as - * opposed to the alpn printing) */ - for (i = 0; i < data_len; i++) { - if (!isprint(data[i])) { - w += sldns_str_print(s, slen, "\\%03u", (unsigned) data[i]); - } else { - w += sldns_str_print(s, slen, "%c", data[i]); - } - } - - w += sldns_str_print(s, slen, "\""); - - return w; -} - int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* slen) { uint8_t ch; @@ -1231,8 +1203,7 @@ int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char** s, size_t* sl r = sldns_wire2str_svcparam_ech2str(s, slen, data_len, *d); break; case SVCB_KEY_DOHPATH: - r = sldns_wire2str_svcparam_dohpath2str(s, slen, data_len, *d); - break; + /* fallthrough */ default: r = sldns_str_print(s, slen, "=\""); diff --git a/testdata/svcb.tdir/svcb.failure-cases-05 b/testdata/svcb.tdir/svcb.failure-cases-05 deleted file mode 100644 index 67246c954..000000000 --- a/testdata/svcb.tdir/svcb.failure-cases-05 +++ /dev/null @@ -1,8 +0,0 @@ -$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} \ No newline at end of file