diff options
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() |