Skip to content
This repository was archived by the owner on Aug 1, 2024. It is now read-only.

Commit ac0736b

Browse files
12wrigjakjin
authored andcommitted
Fix authority parsing in Closure URI parser.
PiperOrigin-RevId: 288978923
1 parent bf42e87 commit ac0736b

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

closure/goog/uri/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ goog.uri.utils.splitRe_ = new RegExp(
195195
'(?:([^/?#]*)@)?' + // userInfo
196196
'([^/#?]*?)' + // domain
197197
'(?::([0-9]+))?' + // port
198-
'(?=[/#?]|$)' + // authority-terminating character
198+
'(?=[/\\\\#?]|$)' + // authority-terminating character
199199
')?' +
200200
'([^?#]+)?' + // path
201201
'(?:\\?([^#]*))?' + // query

closure/goog/uri/utils_test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,19 @@ testSuite({
106106
assertEquals('fragment', utils.getFragment(uri));
107107
},
108108

109+
testSplitMaliciousUri() {
110+
const uri = 'https://malicious.com\\test.google.com';
111+
assertEquals('https', utils.getScheme(uri));
112+
assertEquals('malicious.com', utils.getDomain(uri));
113+
assertEquals('malicious.com', utils.getDomainEncoded(uri));
114+
assertNull(utils.getPort(uri));
115+
assertEquals('\\test.google.com', utils.getPathEncoded(uri));
116+
assertEquals('\\test.google.com', utils.getPath(uri));
117+
assertNull(utils.getQueryData(uri));
118+
assertNull(utils.getFragmentEncoded(uri));
119+
assertNull(utils.getFragment(uri));
120+
},
121+
109122
testSplitBadAuthority() {
110123
// This URL has a syntax error per the RFC (port number must be digits, and
111124
// host cannot contain a colon except in [...]). This test is solely to

0 commit comments

Comments
 (0)