Skip to content

Commit 9d66557

Browse files
nayeemrmndsherret
authored andcommitted
fix: handling of contradictory global permission flags (#29213)
1 parent 2959e08 commit 9d66557

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

runtime/permissions/lib.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,8 @@ impl<TQuery: QueryDescriptor> UnaryPermission<TQuery> {
410410

411411
pub fn is_allow_all(&self) -> bool {
412412
self.granted_global
413+
&& !self.flag_denied_global
414+
&& !self.prompt_denied_global
413415
&& self.flag_denied_list.is_empty()
414416
&& self.prompt_denied_list.is_empty()
415417
}
@@ -4840,6 +4842,30 @@ mod tests {
48404842
assert!(perms.write.check(&write_query, None).is_err());
48414843
}
48424844

4845+
#[test]
4846+
fn test_check_allow_global_deny_global() {
4847+
let parser = TestPermissionDescriptorParser;
4848+
let mut perms = Permissions::from_options(
4849+
&parser,
4850+
&PermissionsOptions {
4851+
allow_read: Some(vec![]),
4852+
deny_read: Some(vec![]),
4853+
allow_write: Some(vec![]),
4854+
deny_write: Some(vec![]),
4855+
..Default::default()
4856+
},
4857+
)
4858+
.unwrap();
4859+
4860+
assert!(perms.read.check_all(None).is_err());
4861+
let read_query = parser.parse_path_query("/foo").unwrap().into_read();
4862+
assert!(perms.read.check(&read_query, None).is_err());
4863+
4864+
assert!(perms.write.check_all(None).is_err());
4865+
let write_query = parser.parse_path_query("/foo").unwrap().into_write();
4866+
assert!(perms.write.check(&write_query, None).is_err());
4867+
}
4868+
48434869
#[test]
48444870
fn test_net_fully_qualified_domain_name() {
48454871
set_prompter(Box::new(TestPrompter));

0 commit comments

Comments
 (0)