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