diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2020-10-27 06:56:00 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-27 06:56:00 +1100 |
commit | b03f4a4a1c252d808b72fc462ea783362f810c75 (patch) | |
tree | 2199c73cb12c9650ae829ee73d377d1a35ec4071 /cli/program_state.rs | |
parent | acc201625fd613c6e1e66d1714069726ec2a4b73 (diff) |
fix(cli): restore permission check on workers (#8123)
Fixes #8120
Diffstat (limited to 'cli/program_state.rs')
-rw-r--r-- | cli/program_state.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/cli/program_state.rs b/cli/program_state.rs index a3dd65dc1..f8af957b6 100644 --- a/cli/program_state.rs +++ b/cli/program_state.rs @@ -121,13 +121,19 @@ impl ProgramState { self: &Arc<Self>, specifier: ModuleSpecifier, target_lib: TargetLib, - dynamic_permissions: Permissions, + runtime_permissions: Permissions, is_dynamic: bool, maybe_import_map: Option<ImportMap>, ) -> Result<(), AnyError> { let specifier = specifier.clone(); + // Workers are subject to the current runtime permissions. We do the + // permission check here early to avoid "wasting" time building a module + // graph for a module that cannot be loaded. + if target_lib == TargetLib::Worker { + runtime_permissions.check_specifier(&specifier)?; + } let handler = - Rc::new(RefCell::new(FetchHandler::new(self, dynamic_permissions)?)); + Rc::new(RefCell::new(FetchHandler::new(self, runtime_permissions)?)); let mut builder = GraphBuilder2::new(handler, maybe_import_map, self.lockfile.clone()); builder.add(&specifier, is_dynamic).await?; |