src,permission: do not throw on denied access in audit mode · nodejs/node@d53d582 · GitHub
Skip to content

Commit d53d582

Browse files
edsadraduh95
authored andcommitted
src,permission: do not throw on denied access in audit mode
The THROW_IF_INSUFFICIENT_PERMISSIONS and ASYNC_THROW_IF_INSUFFICIENT_PERMISSIONS macros called ThrowAccessDenied/AsyncThrowAccessDenied unconditionally and only guarded the `return` with `warning_only()`. ERR_ACCESS_DENIED_IF_INSUFFICIENT_PERMISSIONS had no `warning_only()` guard at all — it always set the access-denied error and returned. As a result, running with `--permission-audit` still produced ERR_ACCESS_DENIED on any denied operation (fs, net, child_process, worker, addon, ffi, inspector, wasi), defeating the audit-only purpose of the flag. Guard the denied-error path behind `!warning_only()` in all three macros. In audit mode, the diagnostics-channel message is published (already done in Permission::is_scope_granted) and execution continues; in enforce mode (`--permission`), behavior is unchanged — the error is raised and the call returns. The tests cover both the direct (top-level) call and an `eval()`-wrapped call: the direct call exercises the normal script path, and the `eval()`-wrapped call exercises the V8 script-context boundary (the diagnostics subscriber is registered in the outer module context while the denied operation runs inside an eval'd string). Refs: 9ddd1a9 Signed-off-by: Adrian Estrada <edsadr@gmail.com> PR-URL: #64426 Backport-PR-URL: #65354 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
1 parent c40d147 commit d53d582

2 files changed

Lines changed: 79 additions & 13 deletions

File tree

src/permission/permission.h

Lines changed: 20 additions & 13 deletions
Lines changed: 59 additions & 0 deletions

0 commit comments

Comments
 (0)