mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 23:02:20 +00:00
Bug 1669833 - Removed else after the return statement. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D93873
This commit is contained in:
parent
c47fc76053
commit
f71808cc4b
@ -195,37 +195,40 @@ nsresult nsChromeRegistry::Canonify(nsCOMPtr<nsIURI>& aChromeURL) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
return NS_MutateURI(aChromeURL).SetPathQueryRef(path).Finalize(aChromeURL);
|
||||
} else {
|
||||
// prevent directory traversals ("..")
|
||||
// path is already unescaped once, but uris can get unescaped twice
|
||||
const char* pos = path.BeginReading();
|
||||
const char* end = path.EndReading();
|
||||
// Must start with [a-zA-Z0-9].
|
||||
if (!('a' <= *pos && *pos <= 'z') && !('A' <= *pos && *pos <= 'Z') &&
|
||||
!('0' <= *pos && *pos <= '9')) {
|
||||
return NS_ERROR_DOM_BAD_URI;
|
||||
}
|
||||
while (pos < end) {
|
||||
switch (*pos) {
|
||||
case ':':
|
||||
}
|
||||
|
||||
// prevent directory traversals ("..")
|
||||
// path is already unescaped once, but uris can get unescaped twice
|
||||
const char* pos = path.BeginReading();
|
||||
const char* end = path.EndReading();
|
||||
// Must start with [a-zA-Z0-9].
|
||||
if (!('a' <= *pos && *pos <= 'z') && !('A' <= *pos && *pos <= 'Z') &&
|
||||
!('0' <= *pos && *pos <= '9')) {
|
||||
return NS_ERROR_DOM_BAD_URI;
|
||||
}
|
||||
while (pos < end) {
|
||||
switch (*pos) {
|
||||
case ':':
|
||||
return NS_ERROR_DOM_BAD_URI;
|
||||
case '.':
|
||||
if (pos[1] == '.') {
|
||||
return NS_ERROR_DOM_BAD_URI;
|
||||
case '.':
|
||||
if (pos[1] == '.') return NS_ERROR_DOM_BAD_URI;
|
||||
break;
|
||||
case '%':
|
||||
// chrome: URIs with double-escapes are trying to trick us.
|
||||
// watch for %2e, and %25 in case someone triple unescapes
|
||||
if (pos[1] == '2' &&
|
||||
(pos[2] == 'e' || pos[2] == 'E' || pos[2] == '5'))
|
||||
return NS_ERROR_DOM_BAD_URI;
|
||||
break;
|
||||
case '?':
|
||||
case '#':
|
||||
pos = end;
|
||||
continue;
|
||||
}
|
||||
++pos;
|
||||
}
|
||||
break;
|
||||
case '%':
|
||||
// chrome: URIs with double-escapes are trying to trick us.
|
||||
// watch for %2e, and %25 in case someone triple unescapes
|
||||
if (pos[1] == '2' &&
|
||||
(pos[2] == 'e' || pos[2] == 'E' || pos[2] == '5')) {
|
||||
return NS_ERROR_DOM_BAD_URI;
|
||||
}
|
||||
break;
|
||||
case '?':
|
||||
case '#':
|
||||
pos = end;
|
||||
continue;
|
||||
}
|
||||
++pos;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
Loading…
Reference in New Issue
Block a user