| 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) {
|
|
|