Skip to content

Commit 38c8e9d

Browse files
authored
Merge pull request #751 from crowlKats/whatwg/url#589
Forbid | in URL hosts
2 parents fc76310 + 3dc30d1 commit 38c8e9d

File tree

2 files changed

+61
-18
lines changed

2 files changed

+61
-18
lines changed

url/src/host.rs

+16-18
Original file line numberDiff line numberDiff line change
@@ -90,24 +90,21 @@ impl Host<String> {
9090
}
9191

9292
let is_invalid_domain_char = |c| {
93-
matches!(
94-
c,
95-
| '\0'..='\u{001F}'
96-
| ' '
97-
| '#'
98-
| '%'
99-
| '/'
100-
| ':'
101-
| '<'
102-
| '>'
103-
| '?'
104-
| '@'
105-
| '['
106-
| '\\'
107-
| ']'
108-
| '^'
109-
| '\u{007F}'
110-
)
93+
matches!(c, |'\0'..='\u{001F}'| ' '
94+
| '#'
95+
| '%'
96+
| '/'
97+
| ':'
98+
| '<'
99+
| '>'
100+
| '?'
101+
| '@'
102+
| '['
103+
| '\\'
104+
| ']'
105+
| '^'
106+
| '\u{007F}'
107+
| '|')
111108
};
112109

113110
if domain.find(is_invalid_domain_char).is_some() {
@@ -146,6 +143,7 @@ impl Host<String> {
146143
| '\\'
147144
| ']'
148145
| '^'
146+
| '|'
149147
)
150148
};
151149

url/tests/urltestdata.json

+45
Original file line numberDiff line numberDiff line change
@@ -4707,6 +4707,11 @@
47074707
"base": "about:blank",
47084708
"failure": true
47094709
},
4710+
{
4711+
"input": "sc://a|b/",
4712+
"base": "about:blank",
4713+
"failure": true
4714+
},
47104715
"Forbidden host codepoints: tabs and newlines are removed during preprocessing",
47114716
{
47124717
"input": "foo://ho\u0009st/",
@@ -4931,6 +4936,11 @@
49314936
"base": "about:blank",
49324937
"failure": true
49334938
},
4939+
{
4940+
"input": "http://a|b/",
4941+
"base": "about:blank",
4942+
"failure": true
4943+
},
49344944
{
49354945
"input": "http://a\u007Fb/",
49364946
"base": "about:blank",
@@ -5200,6 +5210,11 @@
52005210
"base": "about:blank",
52015211
"failure": true
52025212
},
5213+
{
5214+
"input": "http://ho%7Cst/",
5215+
"base": "about:blank",
5216+
"failure": true
5217+
},
52035218
{
52045219
"input": "http://ho%7Fst/",
52055220
"base": "about:blank",
@@ -5777,6 +5792,36 @@
57775792
"base": "about:blank",
57785793
"failure": true
57795794
},
5795+
{
5796+
"input": "file://%43%7C",
5797+
"base": "about:blank",
5798+
"failure": true
5799+
},
5800+
{
5801+
"input": "file://%43|",
5802+
"base": "about:blank",
5803+
"failure": true
5804+
},
5805+
{
5806+
"input": "file://C%7C",
5807+
"base": "about:blank",
5808+
"failure": true
5809+
},
5810+
{
5811+
"input": "file://%43%7C/",
5812+
"base": "about:blank",
5813+
"failure": true
5814+
},
5815+
{
5816+
"input": "https://%43%7C/",
5817+
"base": "about:blank",
5818+
"failure": true
5819+
},
5820+
{
5821+
"input": "asdf://%43|/",
5822+
"base": "about:blank",
5823+
"failure": true
5824+
},
57805825
{
57815826
"input": "asdf://%43%7C/",
57825827
"base": "about:blank",

0 commit comments

Comments
 (0)