| Index: components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
|
| diff --git a/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc b/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
|
| deleted file mode 100644
|
| index 5b62ce67a1736210b62d3e9a5c64dd20bbf16424..0000000000000000000000000000000000000000
|
| --- a/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
|
| +++ /dev/null
|
| @@ -1,461 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/nacl/loader/nonsfi/nonsfi_sandbox.h"
|
| -
|
| -#include <errno.h>
|
| -#include <fcntl.h>
|
| -#include <pthread.h>
|
| -#include <sched.h>
|
| -#include <signal.h>
|
| -#include <stdlib.h>
|
| -#include <string.h>
|
| -#include <sys/mman.h>
|
| -#include <sys/prctl.h>
|
| -#include <sys/ptrace.h>
|
| -#include <sys/socket.h>
|
| -#include <sys/syscall.h>
|
| -#include <sys/types.h>
|
| -#include <sys/wait.h>
|
| -#include <unistd.h>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/callback.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/files/scoped_file.h"
|
| -#include "base/logging.h"
|
| -#include "base/posix/eintr_wrapper.h"
|
| -#include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
|
| -#include "sandbox/linux/seccomp-bpf/bpf_tests.h"
|
| -
|
| -namespace {
|
| -
|
| -void DoPipe(base::ScopedFD* fds) {
|
| - int tmp_fds[2];
|
| - BPF_ASSERT_EQ(0, pipe(tmp_fds));
|
| - fds[0].reset(tmp_fds[0]);
|
| - fds[1].reset(tmp_fds[1]);
|
| -}
|
| -
|
| -void DoSocketpair(base::ScopedFD* fds) {
|
| - int tmp_fds[2];
|
| - BPF_ASSERT_EQ(0, socketpair(AF_UNIX, SOCK_STREAM, 0, tmp_fds));
|
| - fds[0].reset(tmp_fds[0]);
|
| - fds[1].reset(tmp_fds[1]);
|
| -}
|
| -
|
| -TEST(NaClNonSfiSandboxTest, BPFIsSupported) {
|
| - bool seccomp_bpf_supported = false;
|
| - // Seccomp-BPF tests die under TSAN v2. See http://crbug.com/356588
|
| -#if !defined(THREAD_SANITIZER)
|
| - seccomp_bpf_supported = (
|
| - sandbox::SandboxBPF::SupportsSeccompSandbox(-1) ==
|
| - sandbox::SandboxBPF::STATUS_AVAILABLE);
|
| -#endif
|
| -
|
| - if (!seccomp_bpf_supported) {
|
| - LOG(ERROR) << "Seccomp BPF is not supported, these tests "
|
| - << "will pass without running";
|
| - }
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, invalid_sysno,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - syscall(999);
|
| -}
|
| -
|
| -const int kExpectedValue = 123;
|
| -
|
| -void* SetValueInThread(void* test_val_ptr) {
|
| - *reinterpret_cast<int*>(test_val_ptr) = kExpectedValue;
|
| - return NULL;
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, clone_by_pthread_create,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - // clone call for thread creation is allowed.
|
| - pthread_t th;
|
| - int test_val = 42;
|
| - BPF_ASSERT_EQ(0, pthread_create(&th, NULL, &SetValueInThread, &test_val));
|
| - BPF_ASSERT_EQ(0, pthread_join(th, NULL));
|
| - BPF_ASSERT_EQ(kExpectedValue, test_val);
|
| -}
|
| -
|
| -int DoFork() {
|
| - // Call clone() to do a fork().
|
| - const int pid = syscall(__NR_clone, SIGCHLD, NULL);
|
| - if (pid == 0)
|
| - _exit(0);
|
| - return pid;
|
| -}
|
| -
|
| -// The sanity check for DoFork without the sandbox.
|
| -TEST(NaClNonSfiSandboxTest, DoFork) {
|
| - const int pid = DoFork();
|
| - ASSERT_LT(0, pid);
|
| - int status;
|
| - ASSERT_EQ(pid, HANDLE_EINTR(waitpid(pid, &status, 0)));
|
| - ASSERT_TRUE(WIFEXITED(status));
|
| - ASSERT_EQ(0, WEXITSTATUS(status));
|
| -}
|
| -
|
| -// Then, try this in the sandbox.
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, clone_for_fork,
|
| - DEATH_MESSAGE(sandbox::GetCloneErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - DoFork();
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, prctl_SET_NAME,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_prctl, PR_SET_NAME, "foo"));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, prctl_SET_DUMPABLE,
|
| - DEATH_MESSAGE(sandbox::GetPrctlErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - syscall(__NR_prctl, PR_SET_DUMPABLE, 1UL);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, socketcall_allowed,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - base::ScopedFD fds[2];
|
| - struct msghdr msg = {};
|
| - struct iovec iov;
|
| - std::string payload("foo");
|
| - iov.iov_base = &payload[0];
|
| - iov.iov_len = payload.size();
|
| - msg.msg_iov = &iov;
|
| - msg.msg_iovlen = 1;
|
| - DoSocketpair(fds);
|
| - BPF_ASSERT_EQ(static_cast<int>(payload.size()),
|
| - HANDLE_EINTR(sendmsg(fds[1].get(), &msg, 0)));
|
| - BPF_ASSERT_EQ(static_cast<int>(payload.size()),
|
| - HANDLE_EINTR(recvmsg(fds[0].get(), &msg, 0)));
|
| - BPF_ASSERT_EQ(0, shutdown(fds[0].get(), SHUT_RDWR));
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, accept,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - accept(0, NULL, NULL);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, bind,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - bind(0, NULL, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, connect,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - connect(0, NULL, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, getpeername,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - getpeername(0, NULL, NULL);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, getsockname,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - getsockname(0, NULL, NULL);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, getsockopt,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - getsockopt(0, 0, 0, NULL, NULL);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, listen,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - listen(0, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, recv,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - recv(0, NULL, 0, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, recvfrom,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - recvfrom(0, NULL, 0, 0, NULL, NULL);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, send,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - send(0, NULL, 0, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, sendto,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - sendto(0, NULL, 0, 0, NULL, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, setsockopt,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - setsockopt(0, 0, 0, NULL, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, socket,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - socket(0, 0, 0);
|
| -}
|
| -
|
| -#if defined(__x86_64__) || defined(__arm__)
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, socketpair,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - int fds[2];
|
| - socketpair(AF_INET, SOCK_STREAM, 0, fds);
|
| -}
|
| -#endif
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, fcntl_SETFD_allowed,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - base::ScopedFD fds[2];
|
| - DoSocketpair(fds);
|
| - BPF_ASSERT_EQ(0, fcntl(fds[0].get(), F_SETFD, FD_CLOEXEC));
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, fcntl_SETFD,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - base::ScopedFD fds[2];
|
| - DoSocketpair(fds);
|
| - fcntl(fds[0].get(), F_SETFD, 99);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, fcntl_GETFL_SETFL_allowed,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - base::ScopedFD fds[2];
|
| - DoPipe(fds);
|
| - const int fd = fds[0].get();
|
| - BPF_ASSERT_EQ(0, fcntl(fd, F_GETFL));
|
| - BPF_ASSERT_EQ(0, fcntl(fd, F_SETFL, O_RDWR | O_NONBLOCK));
|
| - BPF_ASSERT_EQ(O_NONBLOCK, fcntl(fd, F_GETFL));
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, fcntl_GETFL_SETFL,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - base::ScopedFD fds[2];
|
| - DoSocketpair(fds);
|
| - fcntl(fds[0].get(), F_SETFL, O_APPEND);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, fcntl_DUPFD,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - fcntl(0, F_DUPFD);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, fcntl_DUPFD_CLOEXEC,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - fcntl(0, F_DUPFD_CLOEXEC);
|
| -}
|
| -
|
| -void* DoAllowedAnonymousMmap() {
|
| - return mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,
|
| - MAP_ANONYMOUS | MAP_SHARED, -1, 0);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, mmap_allowed,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - void* ptr = DoAllowedAnonymousMmap();
|
| - BPF_ASSERT_NE(MAP_FAILED, ptr);
|
| - BPF_ASSERT_EQ(0, munmap(ptr, getpagesize()));
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, mmap_unallowed_flag,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE,
|
| - MAP_ANONYMOUS | MAP_POPULATE, -1, 0);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, mmap_unallowed_prot,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - mmap(NULL, getpagesize(), PROT_READ | PROT_GROWSDOWN,
|
| - MAP_ANONYMOUS, -1, 0);
|
| -}
|
| -
|
| -// TODO(hamaji): Disallow RWX mmap.
|
| -#if 0
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, mmap_rwx,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE | PROT_EXEC,
|
| - MAP_ANONYMOUS, -1, 0);
|
| -}
|
| -#endif
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, mprotect_allowed,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - void* ptr = DoAllowedAnonymousMmap();
|
| - BPF_ASSERT_NE(MAP_FAILED, ptr);
|
| - BPF_ASSERT_EQ(0, mprotect(ptr, getpagesize(), PROT_READ));
|
| - BPF_ASSERT_EQ(0, munmap(ptr, getpagesize()));
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, mprotect_unallowed_prot,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - // We have tested DoAllowedAnonymousMmap is allowed in
|
| - // mmap_allowed, so we can make sure the following mprotect call
|
| - // kills the process.
|
| - void* ptr = DoAllowedAnonymousMmap();
|
| - BPF_ASSERT_NE(MAP_FAILED, ptr);
|
| - mprotect(ptr, getpagesize(), PROT_READ | PROT_GROWSDOWN);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, brk,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - char* next_brk = static_cast<char*>(sbrk(0)) + getpagesize();
|
| - // The kernel interface must return zero for brk.
|
| - BPF_ASSERT_EQ(0, syscall(__NR_brk, next_brk));
|
| - // The libc wrapper translates it to ENOMEM.
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, brk(next_brk));
|
| - BPF_ASSERT_EQ(ENOMEM, errno);
|
| -}
|
| -
|
| -#if defined(__i386__) || defined(__arm__)
|
| -BPF_TEST(NaClNonSfiSandboxTest, getegid32_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_getegid32));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, geteuid32_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_geteuid32));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, getgid32_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_getgid32));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, getuid32_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_getuid32));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, getegid_SIGSYS,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - syscall(__NR_getegid);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, geteuid_SIGSYS,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - syscall(__NR_geteuid);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, getgid_SIGSYS,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - syscall(__NR_getgid);
|
| -}
|
| -
|
| -BPF_DEATH_TEST(NaClNonSfiSandboxTest, getuid_SIGSYS,
|
| - DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - syscall(__NR_getuid);
|
| -}
|
| -#endif
|
| -
|
| -#if defined(__x86_64__)
|
| -BPF_TEST(NaClNonSfiSandboxTest, getegid_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_getegid));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, geteuid_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_geteuid));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, getgid_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_getgid));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, getuid_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_getuid));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -#endif
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, madvise_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_madvise));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, open_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_open));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, ptrace_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_ptrace));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -BPF_TEST(NaClNonSfiSandboxTest, set_robust_list_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_set_robust_list));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -
|
| -#if defined(__i386__) || defined(__x86_64__)
|
| -BPF_TEST(NaClNonSfiSandboxTest, time_EPERM,
|
| - nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| - errno = 0;
|
| - BPF_ASSERT_EQ(-1, syscall(__NR_time));
|
| - BPF_ASSERT_EQ(EPERM, errno);
|
| -}
|
| -#endif
|
| -
|
| -} // namespace
|
|
|