Index: sandbox/linux/bpf_dsl/bpf_dsl.cc |
diff --git a/sandbox/linux/bpf_dsl/bpf_dsl.cc b/sandbox/linux/bpf_dsl/bpf_dsl.cc |
index 2c53ab58cf1fe5fe6448225a52d0dcc800284174..f0ee0a29db7df367874966ae3c74fbd2989bbc46 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) { |