Skip to content

Commit 4a8cf55

Browse files
committed
src: fix permission inspector crash
1 parent 2693f09 commit 4a8cf55

File tree

5 files changed

+59
-1
lines changed

5 files changed

+59
-1
lines changed

deps/v8/src/wasm/wasm-engine.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class WeakScriptHandle {
154154
: script_id_(script->id()), isolate_(isolate) {
155155
DCHECK(IsString(script->name()) || IsUndefined(script->name()));
156156
if (IsString(script->name())) {
157-
source_url_ = String::cast(script->name())->ToCString();
157+
// source_url_ = String::cast(script->name())->ToCString();
158158
}
159159
auto global_handle =
160160
script->GetIsolate()->global_handles()->Create(*script);

src/inspector_js_api.cc

+3
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ void SetConsoleExtensionInstaller(const FunctionCallbackInfo<Value>& info) {
181181

182182
void CallAndPauseOnStart(const FunctionCallbackInfo<v8::Value>& args) {
183183
Environment* env = Environment::GetCurrent(args);
184+
THROW_IF_INSUFFICIENT_PERMISSIONS(env,
185+
permission::PermissionScope::kInspector,
186+
"PauseOnNextJavascriptStatement");
184187
CHECK_GT(args.Length(), 1);
185188
CHECK(args[0]->IsFunction());
186189
SlicedArguments call_args(args, /* start */ 2);

src/node_contextify.cc

+13
Original file line numberDiff line numberDiff line change
@@ -1125,6 +1125,19 @@ bool ContextifyScript::EvalMachine(Local<Context> context,
11251125

11261126
#if HAVE_INSPECTOR
11271127
if (break_on_first_line) {
1128+
if (UNLIKELY(!env->permission()->is_granted(
1129+
env, permission::PermissionScope::kInspector,
1130+
"PauseOnNextJavascriptStatement"))) {
1131+
node::permission::Permission::ThrowAccessDenied(env,
1132+
permission::PermissionScope::kInspector,
1133+
"PauseOnNextJavascriptStatement");
1134+
if (display_errors) {
1135+
// We should decorate non-termination exceptions
1136+
errors::DecorateErrorStack(env, try_catch);
1137+
}
1138+
try_catch.ReThrow();
1139+
return false;
1140+
}
11281141
env->inspector_agent()->PauseOnNextJavascriptStatement("Break on start");
11291142
}
11301143
#endif
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log("Hi!")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
'use strict';
2+
3+
const common = require('../common');
4+
const assert = require('assert');
5+
const { spawnSync } = require('child_process');
6+
const fixtures = require('../common/fixtures');
7+
const file = fixtures.path('permission', 'inspector-brk.js');
8+
9+
common.skipIfWorker();
10+
common.skipIfInspectorDisabled();
11+
12+
// See https://github.com/nodejs/node/issues/53385
13+
{
14+
const { status, stderr } = spawnSync(
15+
process.execPath,
16+
[
17+
'--experimental-permission',
18+
'--allow-fs-read=*',
19+
'--inspect-brk',
20+
file,
21+
],
22+
);
23+
24+
assert.strictEqual(status, 1);
25+
assert.match(stderr.toString(), /Error: Access to this API has been restricted/);
26+
}
27+
28+
{
29+
const { status, stderr } = spawnSync(
30+
process.execPath,
31+
[
32+
'--experimental-permission',
33+
'--inspect-brk',
34+
'--eval',
35+
'console.log("Hi!")',
36+
],
37+
);
38+
39+
assert.strictEqual(status, 1);
40+
assert.match(stderr.toString(), /Error: Access to this API has been restricted/);
41+
}

0 commit comments

Comments
 (0)