10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef COMPONENTS_NACL_LOADER_NONSFI_NONSFI_SANDBOX_H_
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define COMPONENTS_NACL_LOADER_NONSFI_NONSFI_SANDBOX_H_
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/basictypes.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "sandbox/linux/bpf_dsl/bpf_dsl.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace nacl {
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace nonsfi {
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// The seccomp sandbox policy for NaCl non-SFI mode. Note that this
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// policy must be as strong as possible, as non-SFI mode heavily
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// depends on seccomp sandbox.
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class NaClNonSfiBPFSandboxPolicy
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    : public sandbox::bpf_dsl::SandboxBPFDSLPolicy {
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  explicit NaClNonSfiBPFSandboxPolicy() {}
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual ~NaClNonSfiBPFSandboxPolicy() {}
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual sandbox::bpf_dsl::ResultExpr EvaluateSyscall(
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      int sysno) const OVERRIDE;
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual sandbox::bpf_dsl::ResultExpr InvalidSyscall() const OVERRIDE;
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private:
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(NaClNonSfiBPFSandboxPolicy);
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Initializes seccomp-bpf sandbox for non-SFI NaCl. Returns false on
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// failure.
330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbool InitializeBPFSandbox();
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace nonsfi
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace nacl
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif  // COMPONENTS_NACL_LOADER_NONSFI_NONSFI_SANDBOX_H_
39