Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Unified Diff: content/common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc

Issue 721553002: sandbox: Extend BrokerPolicy to support file creation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adding comments Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc
diff --git a/content/common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc b/content/common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc
index 20b8f94ea544d5c40fb55ec7caeaed2f118a04ae..007356c659518cd61f47a0d142d18dd7b403e52e 100644
--- a/content/common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc
+++ b/content/common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc
@@ -25,7 +25,13 @@
#include "sandbox/linux/bpf_dsl/bpf_dsl.h"
#include "sandbox/linux/seccomp-bpf-helpers/syscall_sets.h"
#include "sandbox/linux/services/linux_syscalls.h"
+#include "sandbox/linux/syscall_broker/broker_process.h"
+using sandbox::syscall_broker::BrokerFilePermission;
+using sandbox::syscall_broker::BrokerFilePermissionReadOnly;
+using sandbox::syscall_broker::BrokerFilePermissionReadWrite;
+using sandbox::syscall_broker::
+ BrokerFilePermissionReadWriteCreateUnlinkRecursive;
using sandbox::SyscallSets;
using sandbox::bpf_dsl::Allow;
using sandbox::bpf_dsl::Arg;
@@ -53,8 +59,7 @@ inline bool IsArchitectureArm() {
#endif
}
-void AddArmMaliGpuWhitelist(std::vector<std::string>* read_whitelist,
- std::vector<std::string>* write_whitelist) {
+void AddArmMaliGpuWhitelist(std::vector<BrokerFilePermission>* permissions) {
Jorge Lucangeli Obes 2014/11/14 18:48:06 Does it make sense to split this CL in two and fir
leecam 2014/11/18 21:40:53 Not changing the behavior of the policies here but
// Device file needed by the ARM GPU userspace.
static const char kMali0Path[] = "/dev/mali0";
@@ -65,19 +70,13 @@ void AddArmMaliGpuWhitelist(std::vector<std::string>* read_whitelist,
// Devices needed for video encode acceleration on ARM.
static const char kDevMfcEncPath[] = "/dev/mfc-enc";
- read_whitelist->push_back(kMali0Path);
- read_whitelist->push_back(kDevMfcDecPath);
- read_whitelist->push_back(kDevGsc1Path);
- read_whitelist->push_back(kDevMfcEncPath);
-
- write_whitelist->push_back(kMali0Path);
- write_whitelist->push_back(kDevMfcDecPath);
- write_whitelist->push_back(kDevGsc1Path);
- write_whitelist->push_back(kDevMfcEncPath);
+ permissions->push_back(BrokerFilePermissionReadWrite(kMali0Path));
+ permissions->push_back(BrokerFilePermissionReadWrite(kDevMfcDecPath));
+ permissions->push_back(BrokerFilePermissionReadWrite(kDevGsc1Path));
+ permissions->push_back(BrokerFilePermissionReadWrite(kDevMfcEncPath));
}
-void AddArmGpuWhitelist(std::vector<std::string>* read_whitelist,
- std::vector<std::string>* write_whitelist) {
+void AddArmGpuWhitelist(std::vector<BrokerFilePermission>* permissions) {
// On ARM we're enabling the sandbox before the X connection is made,
// so we need to allow access to |.Xauthority|.
static const char kXAuthorityPath[] = "/home/chronos/.Xauthority";
@@ -87,12 +86,12 @@ void AddArmGpuWhitelist(std::vector<std::string>* read_whitelist,
static const char kLibGlesPath[] = "/usr/lib/libGLESv2.so.2";
static const char kLibEglPath[] = "/usr/lib/libEGL.so.1";
- read_whitelist->push_back(kXAuthorityPath);
- read_whitelist->push_back(kLdSoCache);
- read_whitelist->push_back(kLibGlesPath);
- read_whitelist->push_back(kLibEglPath);
+ permissions->push_back(BrokerFilePermissionReadOnly(kXAuthorityPath));
+ permissions->push_back(BrokerFilePermissionReadOnly(kLdSoCache));
+ permissions->push_back(BrokerFilePermissionReadOnly(kLibGlesPath));
+ permissions->push_back(BrokerFilePermissionReadOnly(kLibEglPath));
- AddArmMaliGpuWhitelist(read_whitelist, write_whitelist);
+ AddArmMaliGpuWhitelist(permissions);
}
class CrosArmGpuBrokerProcessPolicy : public CrosArmGpuProcessPolicy {
@@ -163,14 +162,12 @@ bool CrosArmGpuProcessPolicy::PreSandboxHook() {
// Create a new broker process.
DCHECK(!broker_process());
- std::vector<std::string> read_whitelist_extra;
- std::vector<std::string> write_whitelist_extra;
// Add ARM-specific files to whitelist in the broker.
+ std::vector<BrokerFilePermission> permissions;
+
+ AddArmGpuWhitelist(&permissions);
- AddArmGpuWhitelist(&read_whitelist_extra, &write_whitelist_extra);
- InitGpuBrokerProcess(CrosArmGpuBrokerProcessPolicy::Create,
- read_whitelist_extra,
- write_whitelist_extra);
+ InitGpuBrokerProcess(CrosArmGpuBrokerProcessPolicy::Create, permissions);
const int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE;

Powered by Google App Engine
This is Rietveld 408576698