Skip to content

Commit ef315b5

Browse files
authored
fix: handling of contradictory global permission flags (#29213)
1 parent 2211bb4 commit ef315b5

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
}
@@ -4844,6 +4846,30 @@ mod tests {
48444846
assert!(perms.write.check(&write_query, None).is_err());
48454847
}
48464848

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

0 commit comments

Comments
 (0)