From 40db3e511e961ba1ba0599866f184fb4c4d7dda8 Mon Sep 17 00:00:00 2001 From: XmiliaH Date: Tue, 15 Feb 2022 12:14:22 +0100 Subject: [PATCH 1/2] Fix 404 and 406. --- CHANGELOG.md | 5 +++++ lib/bridge.js | 4 +++- lib/nodevm.js | 4 ++-- lib/setup-node-sandbox.js | 2 +- test/nodevm.js | 3 ++- test/vm.js | 4 ++++ 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b54c4f..e790ddf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +v3.9.8 (TBD) +------------------- +[fix] Add function typecheck for arguments, caller, and callee property check (GeoffRen) +[fix] Fix fix best extension handler + v3.9.7 (2022-02-10) ------------------- [fix] Allow relative require from base script diff --git a/lib/bridge.js b/lib/bridge.js index fb3d83b..f21913a 100644 --- a/lib/bridge.js +++ b/lib/bridge.js @@ -431,7 +431,9 @@ function createBridge(otherInit, registerProxy) { case 'arguments': case 'caller': case 'callee': - if (thisOtherHasOwnProperty(object, key)) throw thisThrowCallerCalleeArgumentsAccess(key); + if (typeof object === 'function' && thisOtherHasOwnProperty(object, key)) { + throw thisThrowCallerCalleeArgumentsAccess(key); + } break; } let ret; // @other(unsafe) diff --git a/lib/nodevm.js b/lib/nodevm.js index 2931eae..97abd4a 100644 --- a/lib/nodevm.js +++ b/lib/nodevm.js @@ -405,9 +405,9 @@ class NodeVM extends VM { } } const prefix = strict ? STRICT_MODULE_PREFIX : MODULE_PREFIX; - let scriptCode = prefix + this._compiler(code, unresolvedFilename) + MODULE_SUFFIX; + let scriptCode = this._compiler(code, unresolvedFilename); scriptCode = transformer(null, scriptCode, false, false).code; - script = new Script(scriptCode, { + script = new Script(prefix + scriptCode + MODULE_SUFFIX, { __proto__: null, filename: unresolvedFilename, displayErrors: false diff --git a/lib/setup-node-sandbox.js b/lib/setup-node-sandbox.js index f65b27e..a90cb2e 100644 --- a/lib/setup-node-sandbox.js +++ b/lib/setup-node-sandbox.js @@ -148,7 +148,7 @@ Module._cache = {__proto__: null}; function findBestExtensionHandler(filename) { const name = resolver.pathBasename(filename); for (let i = 0; (i = localStringPrototypeIndexOf(name, '.', i + 1)) !== -1;) { - const ext = localStringPrototypeSlice(name, i + 1); + const ext = localStringPrototypeSlice(name, i); const handler = Module._extensions[ext]; if (handler) return handler; } diff --git a/test/nodevm.js b/test/nodevm.js index 2c1e02c..a5dcbea 100644 --- a/test/nodevm.js +++ b/test/nodevm.js @@ -77,7 +77,8 @@ describe('modules', () => { it('require json', () => { const vm = new NodeVM({ require: { - external: true + external: true, + context: 'sandbox' } }); diff --git a/test/vm.js b/test/vm.js index e1ac4d6..66c53ee 100644 --- a/test/vm.js +++ b/test/vm.js @@ -380,6 +380,10 @@ describe('contextify', () => { } }); + it('arguments', () => { + assert.doesNotThrow(() => vm.run('(o) => o.arguments')({arguments: 1})); + }); + after(() => { vm = null; }); From c7a972f3d8c4bf2c5a37503367d0d59a03c03616 Mon Sep 17 00:00:00 2001 From: XmiliaH Date: Tue, 15 Feb 2022 12:19:14 +0100 Subject: [PATCH 2/2] Fix typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e790ddf..a79f45e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ v3.9.8 (TBD) ------------------- [fix] Add function typecheck for arguments, caller, and callee property check (GeoffRen) -[fix] Fix fix best extension handler +[fix] Fix find best extension handler v3.9.7 (2022-02-10) -------------------