Index: sandbox/linux/seccomp-bpf/demo.cc |
diff --git a/sandbox/linux/seccomp-bpf/demo.cc b/sandbox/linux/seccomp-bpf/demo.cc |
index 1cf4511454a4f43e34b8dd68ecdb760b36f8ec4a..d9fd3423eeef5410d38f88137c1ab10ed12a5df8 100644 |
--- a/sandbox/linux/seccomp-bpf/demo.cc |
+++ b/sandbox/linux/seccomp-bpf/demo.cc |
@@ -26,12 +26,15 @@ |
#include <time.h> |
#include <unistd.h> |
+#include "base/macros.h" |
#include "base/posix/eintr_wrapper.h" |
#include "sandbox/linux/seccomp-bpf/sandbox_bpf.h" |
+#include "sandbox/linux/seccomp-bpf/sandbox_bpf_policy.h" |
#include "sandbox/linux/services/linux_syscalls.h" |
using sandbox::ErrorCode; |
using sandbox::SandboxBPF; |
+using sandbox::SandboxBPFPolicy; |
using sandbox::arch_seccomp_data; |
#define ERR EPERM |
@@ -237,7 +240,17 @@ intptr_t DefaultHandler(const struct arch_seccomp_data& data, void *) { |
return -ERR; |
} |
-ErrorCode Evaluator(SandboxBPF* sandbox, int sysno, void *) { |
+class DemoPolicy : public SandboxBPFPolicy { |
+ public: |
+ DemoPolicy() {} |
+ virtual ErrorCode EvaluateSyscall(SandboxBPF* sandbox, |
+ int sysno) const OVERRIDE; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DemoPolicy); |
+}; |
+ |
+ErrorCode DemoPolicy::EvaluateSyscall(SandboxBPF* sandbox, int sysno) const { |
switch (sysno) { |
#if defined(__NR_accept) |
case __NR_accept: case __NR_accept4: |
@@ -420,7 +433,7 @@ int main(int argc, char *argv[]) { |
} |
SandboxBPF sandbox; |
sandbox.set_proc_fd(proc_fd); |
- sandbox.SetSandboxPolicyDeprecated(Evaluator, NULL); |
+ sandbox.SetSandboxPolicy(new DemoPolicy()); |
if (!sandbox.StartSandbox(SandboxBPF::PROCESS_SINGLE_THREADED)) { |
fprintf(stderr, "StartSandbox() failed"); |
_exit(1); |