1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-11 13:51:01 -05:00

Limit number of URL schemes

This limits the number of allowed schemes for the URL launcher, to
reduce the number of false-positives.

The accepted URL schemes are now:
    - http
    - https
    - mailto
    - news
    - file
    - git
    - ssh
    - ftp

This fixes #1727.
This commit is contained in:
Christian Duerr 2019-01-03 21:18:26 +01:00 committed by Christian Duerr
parent fbefd804c8
commit b6a5ba21a1
2 changed files with 9 additions and 1 deletions

View file

@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Windows configuration location has been moved from %USERPROFILE%\alacritty.yml - Windows configuration location has been moved from %USERPROFILE%\alacritty.yml
to %APPDATA%\alacritty\alacritty.yml to %APPDATA%\alacritty\alacritty.yml
- Windows default shell is now PowerShell instead of cmd - Windows default shell is now PowerShell instead of cmd
- URL schemes have been limited to http, https, mailto, news, file, git, ssh and ftp
### Fixed ### Fixed

View file

@ -41,6 +41,7 @@ use self::cell::LineLength;
// See https://tools.ietf.org/html/rfc3987#page-13 // See https://tools.ietf.org/html/rfc3987#page-13
const URL_SEPARATOR_CHARS: [char; 10] = ['<', '>', '"', ' ', '{', '}', '|', '\\', '^', '`']; const URL_SEPARATOR_CHARS: [char; 10] = ['<', '>', '"', ' ', '{', '}', '|', '\\', '^', '`'];
const URL_DENY_END_CHARS: [char; 7] = ['.', ',', ';', ':', '?', '!', '/']; const URL_DENY_END_CHARS: [char; 7] = ['.', ',', ';', ':', '?', '!', '/'];
const URL_SCHEMES: [&str; 8] = ["http", "https", "mailto", "news", "file", "git", "ssh", "ftp"];
/// A type that can expand a given point to a region /// A type that can expand a given point to a region
/// ///
@ -148,7 +149,13 @@ impl Search for Term {
// Check if string is valid url // Check if string is valid url
match Url::parse(&buf) { match Url::parse(&buf) {
Ok(_) => Some(buf), Ok(url) => {
if URL_SCHEMES.contains(&url.scheme()) {
Some(buf)
} else {
None
}
}
Err(_) => None, Err(_) => None,
} }
} }