diff options
Diffstat (limited to 'sandbox/linux/bpf_dsl/bpf_dsl.cc')
-rw-r--r-- | sandbox/linux/bpf_dsl/bpf_dsl.cc | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/sandbox/linux/bpf_dsl/bpf_dsl.cc b/sandbox/linux/bpf_dsl/bpf_dsl.cc index 2c53ab5..f0ee0a2 100644 --- a/sandbox/linux/bpf_dsl/bpf_dsl.cc +++ b/sandbox/linux/bpf_dsl/bpf_dsl.cc @@ -10,17 +10,12 @@ #include "base/memory/ref_counted.h" #include "sandbox/linux/bpf_dsl/bpf_dsl_impl.h" #include "sandbox/linux/bpf_dsl/policy_compiler.h" -#include "sandbox/linux/seccomp-bpf/die.h" #include "sandbox/linux/seccomp-bpf/errorcode.h" namespace sandbox { namespace bpf_dsl { namespace { -intptr_t BPFFailure(const struct arch_seccomp_data&, void* aux) { - SANDBOX_DIE(static_cast<char*>(aux)); -} - class AllowResultExprImpl : public internal::ResultExprImpl { public: AllowResultExprImpl() {} @@ -57,6 +52,22 @@ class ErrorResultExprImpl : public internal::ResultExprImpl { DISALLOW_COPY_AND_ASSIGN(ErrorResultExprImpl); }; +class KillResultExprImpl : public internal::ResultExprImpl { + public: + KillResultExprImpl() {} + + ErrorCode Compile(PolicyCompiler* pc) const override { + return ErrorCode(ErrorCode::ERR_KILL); + } + + bool IsDeny() const override { return true; } + + private: + ~KillResultExprImpl() override {} + + DISALLOW_COPY_AND_ASSIGN(KillResultExprImpl); +}; + class TraceResultExprImpl : public internal::ResultExprImpl { public: TraceResultExprImpl(uint16_t aux) : aux_(aux) {} @@ -276,8 +287,8 @@ ResultExpr Error(int err) { return ResultExpr(new const ErrorResultExprImpl(err)); } -ResultExpr Kill(const char* msg) { - return Trap(BPFFailure, msg); +ResultExpr Kill() { + return ResultExpr(new const KillResultExprImpl()); } ResultExpr Trace(uint16_t aux) { |