diff options
author | Nayeem Rahman <muhammed.9939@gmail.com> | 2020-02-11 09:29:36 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-11 10:29:36 +0100 |
commit | 701ce9b3342647cf01cb23c4fc28bc99ce0aa8c1 (patch) | |
tree | e7e36d47453f8f2fe16027ed54d37fee75b153dc /cli/permissions.rs | |
parent | 79b3bc05d6de520f1df73face1744ae3d8be0bb8 (diff) |
refactor: Use PathBuf for paths in flag parsing and whitelists (#3955)
* Use PathBuf for DenoSubcommand::Bundle's out_file
* Use PathBuf for DenoSubcommand::Format's files
* Use PathBuf for DenoSubcommand::Install's dir
* Use PathBuf for read/write whitelists
Diffstat (limited to 'cli/permissions.rs')
-rw-r--r-- | cli/permissions.rs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/cli/permissions.rs b/cli/permissions.rs index 98b7e7a33..868f0e009 100644 --- a/cli/permissions.rs +++ b/cli/permissions.rs @@ -102,9 +102,9 @@ impl Default for PermissionState { pub struct DenoPermissions { // Keep in sync with cli/js/permissions.ts pub allow_read: PermissionState, - pub read_whitelist: HashSet<String>, + pub read_whitelist: HashSet<PathBuf>, pub allow_write: PermissionState, - pub write_whitelist: HashSet<String>, + pub write_whitelist: HashSet<PathBuf>, pub allow_net: PermissionState, pub net_whitelist: HashSet<String>, pub allow_env: PermissionState, @@ -349,10 +349,10 @@ fn log_perm_access(message: &str) { } } -fn check_path_white_list(path: &Path, white_list: &HashSet<String>) -> bool { +fn check_path_white_list(path: &Path, white_list: &HashSet<PathBuf>) -> bool { let mut path_buf = PathBuf::from(path); loop { - if white_list.contains(path_buf.to_str().unwrap()) { + if white_list.contains(&path_buf) { return true; } if !path_buf.pop() { @@ -383,7 +383,11 @@ mod tests { #[test] fn check_paths() { - let whitelist = svec!["/a/specific/dir/name", "/a/specific", "/b/c"]; + let whitelist = vec![ + PathBuf::from("/a/specific/dir/name"), + PathBuf::from("/a/specific"), + PathBuf::from("/b/c"), + ]; let perms = DenoPermissions::from_flags(&DenoFlags { read_whitelist: whitelist.clone(), @@ -530,7 +534,7 @@ mod tests { #[test] fn test_permissions_request_read() { - let whitelist = svec!["/foo/bar"]; + let whitelist = vec![PathBuf::from("/foo/bar")]; let mut perms0 = DenoPermissions::from_flags(&DenoFlags { read_whitelist: whitelist.clone(), ..Default::default() @@ -566,7 +570,7 @@ mod tests { #[test] fn test_permissions_request_write() { - let whitelist = svec!["/foo/bar"]; + let whitelist = vec![PathBuf::from("/foo/bar")]; let mut perms0 = DenoPermissions::from_flags(&DenoFlags { write_whitelist: whitelist.clone(), ..Default::default() |