mirror of
https://github.com/nodejs/node.git
synced 2025-08-15 13:48:44 +02:00
permission: ignore internalModuleStat on module loading
This improves Permission Model usage when allowing read access to specifi modules. To achieve that, the permission model check on internalModuleStat has been removed meaning that on module loading, uv_fs_stat is performed on files and folders even when the permission model is enabled. Although a uv_fs_stat is performed, reading/executing the module will still pass by the permission model check. Without this PR when an app tries to --allow-fs-read=./a.js --allow-fs-read=./b.js where `a` attempt to load b, it will fails as it reads $pwd and no permission has been given to this path. PR-URL: https://github.com/nodejs/node/pull/55797 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
This commit is contained in:
parent
07e2819d5d
commit
3a0968db43
11 changed files with 93 additions and 52 deletions
|
@ -160,7 +160,6 @@ const packageJsonReader = require('internal/modules/package_json_reader');
|
|||
const { getOptionValue, getEmbedderOptions } = require('internal/options');
|
||||
const shouldReportRequiredModules = getLazy(() => process.env.WATCH_REPORT_DEPENDENCIES);
|
||||
|
||||
const permission = require('internal/process/permission');
|
||||
const {
|
||||
vm_dynamic_import_default_internal,
|
||||
} = internalBinding('symbols');
|
||||
|
@ -729,11 +728,8 @@ Module._findPath = function(request, paths, isMain) {
|
|||
// For each path
|
||||
for (let i = 0; i < paths.length; i++) {
|
||||
// Don't search further if path doesn't exist
|
||||
// or doesn't have permission to it
|
||||
const curPath = paths[i];
|
||||
if (insidePath && curPath &&
|
||||
((permission.isEnabled() && !permission.has('fs.read', curPath)) || _stat(curPath) < 1)
|
||||
) {
|
||||
if (insidePath && curPath && _stat(curPath) < 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue