| Index: sandbox/linux/seccomp-bpf/sandbox_bpf.cc
|
| diff --git a/sandbox/linux/seccomp-bpf/sandbox_bpf.cc b/sandbox/linux/seccomp-bpf/sandbox_bpf.cc
|
| index 239043eb270d57b8b60df714323f5a166a380ede..6c6912afb4451a776025a906543c8992cb41616b 100644
|
| --- a/sandbox/linux/seccomp-bpf/sandbox_bpf.cc
|
| +++ b/sandbox/linux/seccomp-bpf/sandbox_bpf.cc
|
| @@ -4,12 +4,6 @@
|
|
|
| #include "sandbox/linux/seccomp-bpf/sandbox_bpf.h"
|
|
|
| -// Some headers on Android are missing cdefs: crbug.com/172337.
|
| -// (We can't use OS_ANDROID here since build_config.h is not included).
|
| -#if defined(ANDROID)
|
| -#include <sys/cdefs.h>
|
| -#endif
|
| -
|
| #include <errno.h>
|
| #include <sys/prctl.h>
|
| #include <sys/types.h>
|
| @@ -22,6 +16,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/posix/eintr_wrapper.h"
|
| #include "base/third_party/valgrind/valgrind.h"
|
| +#include "sandbox/linux/bpf_dsl/bpf_dsl.h"
|
| #include "sandbox/linux/bpf_dsl/codegen.h"
|
| #include "sandbox/linux/bpf_dsl/policy.h"
|
| #include "sandbox/linux/bpf_dsl/policy_compiler.h"
|
| @@ -115,6 +110,14 @@ uint64_t EscapePC() {
|
| return static_cast<uint64_t>(static_cast<uintptr_t>(rv));
|
| }
|
|
|
| +intptr_t SandboxPanicTrap(const struct arch_seccomp_data&, void* aux) {
|
| + SANDBOX_DIE(static_cast<const char*>(aux));
|
| +}
|
| +
|
| +bpf_dsl::ResultExpr SandboxPanic(const char* error) {
|
| + return bpf_dsl::Trap(SandboxPanicTrap, error);
|
| +}
|
| +
|
| } // namespace
|
|
|
| SandboxBPF::SandboxBPF(bpf_dsl::Policy* policy)
|
| @@ -225,6 +228,7 @@ scoped_ptr<CodeGen::Program> SandboxBPF::AssembleFilter(
|
| if (Trap::SandboxDebuggingAllowedByUser()) {
|
| compiler.DangerousSetEscapePC(EscapePC());
|
| }
|
| + compiler.SetPanicFunc(SandboxPanic);
|
| return compiler.Compile(force_verification);
|
| }
|
|
|
|
|