OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CONTENT_COMMON_SANDBOX_LINUX_BPF_GPU_POLICY_LINUX_H_ | |
6 #define CONTENT_COMMON_SANDBOX_LINUX_BPF_GPU_POLICY_LINUX_H_ | |
7 | |
8 #include <string> | |
9 #include <vector> | |
10 | |
11 #include "content/common/sandbox_linux/sandbox_bpf_base_policy_linux.h" | |
12 | |
13 namespace sandbox { | |
14 class BrokerProcess; | |
15 } | |
16 | |
17 namespace content { | |
18 | |
19 class GpuProcessPolicy : public SandboxBPFBasePolicy { | |
20 public: | |
21 GpuProcessPolicy(); | |
22 virtual ~GpuProcessPolicy(); | |
23 | |
24 virtual ErrorCode EvaluateSyscall(SandboxBPF* sandbox_compiler, | |
25 int system_call_number) const OVERRIDE; | |
26 | |
27 virtual bool PreSandboxHook() OVERRIDE; | |
28 | |
29 protected: | |
30 // Start a broker process to handle open() inside the sandbox. | |
31 // |broker_sandboxer_callback| is a callback that will enable a suitable | |
32 // sandbox for the broker process itself. | |
33 // |read_whitelist_extra| and |write_whitelist_extra| are lists of file | |
34 // names that should be whitelisted by the broker process, in addition to | |
35 // the basic ones. | |
36 void InitGpuBrokerProcess( | |
37 bool (*broker_sandboxer_callback)(void), | |
38 const std::vector<std::string>& read_whitelist_extra, | |
39 const std::vector<std::string>& write_whitelist_extra); | |
40 | |
41 sandbox::BrokerProcess* broker_process() { return broker_process_; } | |
42 | |
43 private: | |
44 // A BrokerProcess is a helper that is started before the sandbox is engaged | |
45 // and will serve requests to access files over an IPC channel. The client of | |
46 // this runs from a SIGSYS handler triggered by the seccomp-bpf sandbox. | |
47 // This should never be destroyed, as after the sandbox is started it is | |
48 // vital to the process. | |
49 // This is allocated by InitGpuBrokerProcess, called from PreSandboxHook(), | |
50 // which executes iff the sandbox is going to be enabled afterwards. | |
51 sandbox::BrokerProcess* broker_process_; | |
52 DISALLOW_COPY_AND_ASSIGN(GpuProcessPolicy); | |
53 }; | |
54 | |
55 } // namespace content | |
56 | |
57 #endif // CONTENT_COMMON_SANDBOX_LINUX_BPF_GPU_POLICY_LINUX_H_ | |
OLD | NEW |