Skip to content

Commit 3ebd9dd

Browse files
committed
simplified path logic for the require check
1 parent 8e0da0a commit 3ebd9dd

1 file changed

Lines changed: 8 additions & 19 deletions

File tree

test/tools/runner/vm_context_helper.ts

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@
22

33
import * as fs from 'node:fs';
44
import { isBuiltin } from 'node:module';
5+
import { platform } from 'node:os';
56
import * as path from 'node:path';
67
import * as vm from 'node:vm';
78

8-
const repoRoot = path.resolve(__dirname, '../../..');
9-
109
/**
1110
* Creates a require function that blocks access to specified core modules
1211
*/
1312
function createRestrictedRequire() {
1413
const blockedModules = new Set(['os']);
1514
const allowedRequesters = [
1615
{
17-
file: 'src/runtime_adapters.ts',
16+
file: 'runtime_adapters.ts',
1817
method: 'resolveRuntimeAdapters',
1918
module: 'os'
2019
}
@@ -24,38 +23,28 @@ function createRestrictedRequire() {
2423
// Block core modules
2524
if (isBuiltin(moduleName) && blockedModules.has(moduleName)) {
2625
const callStack = new Error().stack;
26+
const correctPath = platform() === 'win32' ? path.win32 : path.posix;
2727
const methodAndFile = callStack.split('\n')[2];
2828
const match = methodAndFile.match(/at (.*) \((.*)\)/);
2929
const method = match ? match[1] : null;
3030
const sourceFileAndLineNumbers = match ? match[2] : null;
3131
const sourceFile =
32-
sourceFileAndLineNumbers.indexOf(':') !== -1
33-
? sourceFileAndLineNumbers.split(':')[0]
32+
sourceFileAndLineNumbers.indexOf('.ts:') !== -1
33+
? sourceFileAndLineNumbers.substring(0, sourceFileAndLineNumbers.lastIndexOf('.ts:') + 3)
3434
: sourceFileAndLineNumbers;
35-
const srcRelativePath = path.relative(repoRoot, sourceFile);
35+
const sourceFileName = correctPath.basename(sourceFile);
3636
const isAllowed = allowedRequesters.some(
3737
requester =>
38-
requester.file === srcRelativePath &&
38+
requester.file === sourceFileName &&
3939
requester.method === method &&
4040
requester.module === moduleName
4141
);
4242

4343
if (isAllowed) {
4444
// Allow access to the module if the requester is in the allowlist
4545
} else {
46-
console.log({
47-
message: `Blocked access to core module '${moduleName}' from ${srcRelativePath}`,
48-
callStack,
49-
methodAndFile,
50-
match,
51-
method,
52-
sourceFileAndLineNumbers,
53-
sourceFile,
54-
srcRelativePath,
55-
allowedRequesters
56-
});
5746
throw new Error(
58-
`Access to core module '${moduleName}' from ${srcRelativePath} is restricted in this context (callStack: ${callStack}, sourceFile: ${sourceFile}, srcRelativePath: ${srcRelativePath})`
47+
`Access to core module '${moduleName}' from ${sourceFileName} is restricted in this context`
5948
);
6049
}
6150
}

0 commit comments

Comments
 (0)