Skip to content

Commit b2649a3

Browse files
RafaelGSSCeres6
andcommitted
lib,src,permission: port path.resolve to C++
Co-Authored-By: Carlos Espa <[email protected]>
1 parent 8e60189 commit b2649a3

17 files changed

+395
-31
lines changed

src/env.cc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -879,21 +879,25 @@ Environment::Environment(IsolateData* isolate_data,
879879
// unless explicitly allowed by the user
880880
options_->allow_native_addons = false;
881881
flags_ = flags_ | EnvironmentFlags::kNoCreateInspector;
882-
permission()->Apply({"*"}, permission::PermissionScope::kInspector);
882+
permission()->Apply(this, {"*"}, permission::PermissionScope::kInspector);
883883
if (!options_->allow_child_process) {
884-
permission()->Apply({"*"}, permission::PermissionScope::kChildProcess);
884+
permission()->Apply(
885+
this, {"*"}, permission::PermissionScope::kChildProcess);
885886
}
886887
if (!options_->allow_worker_threads) {
887-
permission()->Apply({"*"}, permission::PermissionScope::kWorkerThreads);
888+
permission()->Apply(
889+
this, {"*"}, permission::PermissionScope::kWorkerThreads);
888890
}
889891

890892
if (!options_->allow_fs_read.empty()) {
891-
permission()->Apply(options_->allow_fs_read,
893+
permission()->Apply(this,
894+
options_->allow_fs_read,
892895
permission::PermissionScope::kFileSystemRead);
893896
}
894897

895898
if (!options_->allow_fs_write.empty()) {
896-
permission()->Apply(options_->allow_fs_write,
899+
permission()->Apply(this,
900+
options_->allow_fs_write,
897901
permission::PermissionScope::kFileSystemWrite);
898902
}
899903
}

src/permission/child_process_permission.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ namespace permission {
99

1010
// Currently, ChildProcess manage a single state
1111
// Once denied, it's always denied
12-
void ChildProcessPermission::Apply(const std::vector<std::string>& allow,
12+
void ChildProcessPermission::Apply(Environment* env,
13+
const std::vector<std::string>& allow,
1314
PermissionScope scope) {
1415
deny_all_ = true;
1516
}

src/permission/child_process_permission.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ namespace permission {
1212

1313
class ChildProcessPermission final : public PermissionBase {
1414
public:
15-
void Apply(const std::vector<std::string>& allow,
15+
void Apply(Environment* env,
16+
const std::vector<std::string>& allow,
1617
PermissionScope scope) override;
1718
bool is_granted(PermissionScope perm,
1819
const std::string_view& param = "") const override;

src/permission/fs_permission.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,8 @@ namespace permission {
117117

118118
// allow = '*'
119119
// allow = '/tmp/,/home/example.js'
120-
void FSPermission::Apply(const std::vector<std::string>& allow,
120+
void FSPermission::Apply(Environment* env,
121+
const std::vector<std::string>& allow,
121122
PermissionScope scope) {
122123
for (const std::string& res : allow) {
123124
if (res == "*") {
@@ -130,7 +131,7 @@ void FSPermission::Apply(const std::vector<std::string>& allow,
130131
}
131132
return;
132133
}
133-
GrantAccess(scope, res);
134+
GrantAccess(scope, PathResolve(env, {res}));
134135
}
135136
}
136137

src/permission/fs_permission.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ namespace permission {
1515

1616
class FSPermission final : public PermissionBase {
1717
public:
18-
void Apply(const std::vector<std::string>& allow,
18+
void Apply(Environment* env,
19+
const std::vector<std::string>& allow,
1920
PermissionScope scope) override;
2021
bool is_granted(PermissionScope perm,
2122
const std::string_view& param) const override;

src/permission/inspector_permission.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ namespace permission {
88

99
// Currently, Inspector manage a single state
1010
// Once denied, it's always denied
11-
void InspectorPermission::Apply(const std::vector<std::string>& allow,
11+
void InspectorPermission::Apply(Environment* env,
12+
const std::vector<std::string>& allow,
1213
PermissionScope scope) {
1314
deny_all_ = true;
1415
}

src/permission/inspector_permission.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ namespace permission {
1212

1313
class InspectorPermission final : public PermissionBase {
1414
public:
15-
void Apply(const std::vector<std::string>& allow,
15+
void Apply(Environment* env,
16+
const std::vector<std::string>& allow,
1617
PermissionScope scope) override;
1718
bool is_granted(PermissionScope perm,
1819
const std::string_view& param = "") const override;

src/permission/permission.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,12 @@ void Permission::EnablePermissions() {
130130
}
131131
}
132132

133-
void Permission::Apply(const std::vector<std::string>& allow,
133+
void Permission::Apply(Environment* env,
134+
const std::vector<std::string>& allow,
134135
PermissionScope scope) {
135136
auto permission = nodes_.find(scope);
136137
if (permission != nodes_.end()) {
137-
permission->second->Apply(allow, scope);
138+
permission->second->Apply(env, allow, scope);
138139
}
139140
}
140141

src/permission/permission.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ class Permission {
4949
const std::string_view& res);
5050

5151
// CLI Call
52-
void Apply(const std::vector<std::string>& allow, PermissionScope scope);
52+
void Apply(Environment* env,
53+
const std::vector<std::string>& allow,
54+
PermissionScope scope);
5355
void EnablePermissions();
5456

5557
private:

src/permission/permission_base.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
namespace node {
1212

13+
class Environment;
14+
1315
namespace permission {
1416

1517
#define FILESYSTEM_PERMISSIONS(V) \
@@ -39,7 +41,8 @@ enum class PermissionScope {
3941

4042
class PermissionBase {
4143
public:
42-
virtual void Apply(const std::vector<std::string>& allow,
44+
virtual void Apply(Environment* env,
45+
const std::vector<std::string>& allow,
4346
PermissionScope scope) = 0;
4447
virtual bool is_granted(PermissionScope perm,
4548
const std::string_view& param = "") const = 0;

0 commit comments

Comments
 (0)