| Index: sandbox/linux/seccomp-bpf/syscall_unittest.cc
|
| diff --git a/sandbox/linux/seccomp-bpf/syscall_unittest.cc b/sandbox/linux/seccomp-bpf/syscall_unittest.cc
|
| index 54e1dda254f55d37b2195fd17697ae867d60933f..40c68d7196f3eda0a83ebd7ef6f1c7677fc39a69 100644
|
| --- a/sandbox/linux/seccomp-bpf/syscall_unittest.cc
|
| +++ b/sandbox/linux/seccomp-bpf/syscall_unittest.cc
|
| @@ -99,18 +99,26 @@ intptr_t CopySyscallArgsToAux(const struct arch_seccomp_data& args, void* aux) {
|
| return -ENOMEM;
|
| }
|
|
|
| -ErrorCode CopyAllArgsOnUnamePolicy(SandboxBPF* sandbox,
|
| - int sysno,
|
| - std::vector<uint64_t>* aux) {
|
| - if (!SandboxBPF::IsValidSyscallNumber(sysno)) {
|
| - return ErrorCode(ENOSYS);
|
| +class CopyAllArgsOnUnamePolicy : public SandboxBPFPolicy {
|
| + public:
|
| + explicit CopyAllArgsOnUnamePolicy(std::vector<uint64_t>* aux) : aux_(aux) {}
|
| + virtual ~CopyAllArgsOnUnamePolicy() {}
|
| +
|
| + virtual ErrorCode EvaluateSyscall(SandboxBPF* sandbox,
|
| + int sysno) const OVERRIDE {
|
| + DCHECK(SandboxBPF::IsValidSyscallNumber(sysno));
|
| + if (sysno == __NR_uname) {
|
| + return sandbox->Trap(CopySyscallArgsToAux, aux_);
|
| + } else {
|
| + return ErrorCode(ErrorCode::ERR_ALLOWED);
|
| + }
|
| }
|
| - if (sysno == __NR_uname) {
|
| - return sandbox->Trap(CopySyscallArgsToAux, aux);
|
| - } else {
|
| - return ErrorCode(ErrorCode::ERR_ALLOWED);
|
| - }
|
| -}
|
| +
|
| + private:
|
| + std::vector<uint64_t>* aux_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(CopyAllArgsOnUnamePolicy);
|
| +};
|
|
|
| // We are testing Syscall::Call() by making use of a BPF filter that
|
| // allows us
|
|
|