1 // Copyright (c) 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 SANDBOX_LINUX_SECCOMP_BPF_HELPERS_BASELINE_POLICY_H_ 6 #define SANDBOX_LINUX_SECCOMP_BPF_HELPERS_BASELINE_POLICY_H_ 7 8 #include "sandbox/linux/seccomp-bpf/errorcode.h" 9 #include "sandbox/linux/seccomp-bpf/sandbox_bpf_policy.h" 10 11 namespace sandbox { 12 13 class SandboxBPF; 14 class SandboxBPFPolicy; 15 16 // This is a helper to build seccomp-bpf policies, i.e. policies for a sandbox 17 // that reduces the Linux kernel's attack surface. Given its nature, it doesn't 18 // have a clear semantics and is mostly "implementation-defined". 19 // 20 // This returns an object that implements the SandboxBPFPolicy interface with 21 // a "baseline" policy within Chromium. 22 // The "baseline" policy is somewhat arbitrary. All Chromium policies are an 23 // alteration of it, and it represents a reasonable common ground to run most 24 // code in a sandboxed environment. 25 class BaselinePolicy : public SandboxBPFPolicy { 26 public: 27 BaselinePolicy(); 28 // |fs_denied_errno| is the errno returned when a filesystem access system 29 // call is denied. 30 explicit BaselinePolicy(int fs_denied_errno); 31 virtual ~BaselinePolicy(); 32 33 virtual ErrorCode EvaluateSyscall(SandboxBPF* sandbox_compiler, 34 int system_call_number) const OVERRIDE; 35 36 private: 37 int fs_denied_errno_; 38 DISALLOW_COPY_AND_ASSIGN(BaselinePolicy); 39 }; 40 41 } // namespace sandbox. 42 43 #endif // SANDBOX_LINUX_SECCOMP_BPF_HELPERS_BASELINE_POLICY_H_ 44