Skip to content

Commit 2f0fae9

Browse files
nayeemrmndsherret
authored andcommitted
fix: handling of contradictory global permission flags (#29213)
1 parent 946ccda commit 2f0fae9

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
}
@@ -4792,6 +4794,30 @@ mod tests {
47924794
assert!(perms.write.check(&write_query, None).is_err());
47934795
}
47944796

4797+
#[test]
4798+
fn test_check_allow_global_deny_global() {
4799+
let parser = TestPermissionDescriptorParser;
4800+
let mut perms = Permissions::from_options(
4801+
&parser,
4802+
&PermissionsOptions {
4803+
allow_read: Some(vec![]),
4804+
deny_read: Some(vec![]),
4805+
allow_write: Some(vec![]),
4806+
deny_write: Some(vec![]),
4807+
..Default::default()
4808+
},
4809+
)
4810+
.unwrap();
4811+
4812+
assert!(perms.read.check_all(None).is_err());
4813+
let read_query = parser.parse_path_query("/foo").unwrap().into_read();
4814+
assert!(perms.read.check(&read_query, None).is_err());
4815+
4816+
assert!(perms.write.check_all(None).is_err());
4817+
let write_query = parser.parse_path_query("/foo").unwrap().into_write();
4818+
assert!(perms.write.check(&write_query, None).is_err());
4819+
}
4820+
47954821
#[test]
47964822
fn test_net_fully_qualified_domain_name() {
47974823
set_prompter(Box::new(TestPrompter));

0 commit comments

Comments
 (0)