summaryrefslogtreecommitdiff
path: root/cli/program_state.rs
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-10-27 06:56:00 +1100
committerGitHub <noreply@github.com>2020-10-27 06:56:00 +1100
commitb03f4a4a1c252d808b72fc462ea783362f810c75 (patch)
tree2199c73cb12c9650ae829ee73d377d1a35ec4071 /cli/program_state.rs
parentacc201625fd613c6e1e66d1714069726ec2a4b73 (diff)
fix(cli): restore permission check on workers (#8123)
Fixes #8120
Diffstat (limited to 'cli/program_state.rs')
-rw-r--r--cli/program_state.rs10
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?;