Skip to content

Commit 3c0f62e

Browse files
RafaelGSSerikolofsson
authored andcommitted
1 parent 006862d commit 3c0f62e

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

lib/internal/modules/cjs/loader.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ function Module(id = '', parent) {
196196
redirects = policy.manifest.getDependencyMapper(moduleURL);
197197
// TODO(rafaelgss): remove the necessity of this branch
198198
setOwnProperty(this, 'require', makeRequireFunction(this, redirects));
199+
// eslint-disable-next-line no-proto
200+
setOwnProperty(this.__proto__, 'require', makeRequireFunction(this, redirects));
199201
}
200202
this[require_private_symbol] = internalRequire;
201203
}
@@ -804,7 +806,7 @@ Module._load = function(request, parent, isMain) {
804806
const module = cachedModule || new Module(filename, parent);
805807

806808
if (isMain) {
807-
process.mainModule = module;
809+
setOwnProperty(process, 'mainModule', module);
808810
setOwnProperty(module.require, 'main', process.mainModule);
809811
module.id = '.';
810812
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
process.mainModule.__proto__.require("os")

test/parallel/test-policy-manifest.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,18 @@ const fixtures = require('../common/fixtures.js');
6161

6262
assert.strictEqual(result.status, 0);
6363
}
64+
65+
{
66+
const policyFilepath = fixtures.path('policy-manifest', 'onerror-exit.json');
67+
const mainModuleBypass = fixtures.path('policy-manifest', 'main-module-proto-bypass.js');
68+
const result = spawnSync(process.execPath, [
69+
'--experimental-policy',
70+
policyFilepath,
71+
mainModuleBypass,
72+
]);
73+
74+
assert.notStrictEqual(result.status, 0);
75+
const stderr = result.stderr.toString();
76+
assert.match(stderr, /ERR_MANIFEST_DEPENDENCY_MISSING/);
77+
assert.match(stderr, /does not list os as a dependency specifier for conditions: require, node, node-addons/);
78+
}

0 commit comments

Comments
 (0)