| 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 3a35903ec91a3a7f7690dce1471b81b41bffacef..276aaf6e04f28f4bf456eae709401e52544c5807 100644
|
| --- a/sandbox/linux/bpf_dsl/bpf_dsl.cc
|
| +++ b/sandbox/linux/bpf_dsl/bpf_dsl.cc
|
| @@ -9,18 +9,13 @@
|
| #include "base/logging.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "sandbox/linux/bpf_dsl/bpf_dsl_impl.h"
|
| +#include "sandbox/linux/bpf_dsl/errorcode.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) {}
|
| @@ -255,6 +266,8 @@ uint64_t DefaultMask(size_t size) {
|
| }
|
|
|
| BoolExpr ArgEq(int num, size_t size, uint64_t mask, uint64_t val) {
|
| + // If this is changed, update Arg<T>::EqualTo's static_cast rules
|
| + // accordingly.
|
| CHECK(size == 4 || size == 8);
|
|
|
| // TODO(mdempsky): Should we just always use TP_64BIT?
|
| @@ -274,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) {
|
|
|