diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2023-02-08 18:13:33 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-08 18:13:33 +0100 |
commit | bef50416b92a3ed7bf44b361fc5360f9a52c83e6 (patch) | |
tree | 410070bf0157d69b23b820459553f238f9fddef3 /core/bindings.rs | |
parent | 19543ffec300390f20b577b29d92a58540aaef70 (diff) |
fix(core): don't allow to import internal code is snapshot is loaded (#17694)
Addressing Luca concerns from
https://github.com/denoland/deno/pull/17648#discussion_r1099352286
Diffstat (limited to 'core/bindings.rs')
-rw-r--r-- | core/bindings.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/core/bindings.rs b/core/bindings.rs index dce97000c..50308b931 100644 --- a/core/bindings.rs +++ b/core/bindings.rs @@ -10,6 +10,7 @@ use v8::MapFnTo; use crate::error::is_instance_of_error; use crate::modules::get_asserted_module_type_from_assertions; use crate::modules::parse_import_assertions; +use crate::modules::resolve_helper; use crate::modules::validate_import_assertions; use crate::modules::ImportAssertionsKind; use crate::modules::ModuleMap; @@ -379,9 +380,12 @@ fn import_meta_resolve( url_prop.to_rust_string_lossy(scope) }; let module_map_rc = JsRuntime::module_map(scope); - let loader = { + let (loader, snapshot_loaded_and_not_snapshotting) = { let module_map = module_map_rc.borrow(); - module_map.loader.clone() + ( + module_map.loader.clone(), + module_map.snapshot_loaded_and_not_snapshotting, + ) }; let specifier_str = specifier.to_rust_string_lossy(scope); @@ -390,8 +394,13 @@ fn import_meta_resolve( return; } - match loader.resolve(&specifier_str, &referrer, ResolutionKind::DynamicImport) - { + match resolve_helper( + snapshot_loaded_and_not_snapshotting, + loader, + &specifier_str, + &referrer, + ResolutionKind::DynamicImport, + ) { Ok(resolved) => { let resolved_val = serde_v8::to_v8(scope, resolved.as_str()).unwrap(); rv.set(resolved_val); |