| 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
|
| index 1ba7e530284853da49695a45d12dca8d70633ddc..a58d79277ef185122810bb157146dfe52de63ee0 100644
|
| --- a/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
|
| +++ b/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <errno.h>
|
| #include <fcntl.h>
|
| +#include <linux/futex.h>
|
| #include <pthread.h>
|
| #include <sched.h>
|
| #include <signal.h>
|
| @@ -16,6 +17,7 @@
|
| #include <sys/ptrace.h>
|
| #include <sys/socket.h>
|
| #include <sys/syscall.h>
|
| +#include <sys/time.h>
|
| #include <sys/types.h>
|
| #include <sys/wait.h>
|
| #include <unistd.h>
|
| @@ -115,6 +117,36 @@ BPF_DEATH_TEST(NaClNonSfiSandboxTest, clone_for_fork,
|
| DoFork();
|
| }
|
|
|
| +BPF_TEST(NaClNonSfiSandboxTest, futex_allowed,
|
| + nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| + errno = 0;
|
| + int v = 0;
|
| + struct timespec ts;
|
| + ts.tv_sec = 0;
|
| + ts.tv_nsec = 1; // 1 nanosecond.
|
| + BPF_ASSERT_EQ(-1, syscall(__NR_futex, &v,
|
| + FUTEX_WAIT_PRIVATE, 0, &ts, NULL, 0));
|
| + BPF_ASSERT_EQ(ETIMEDOUT, errno);
|
| +}
|
| +
|
| +// TODO(hamaji): Disallow non-PRIVATE FUTEX_WAIT.
|
| +BPF_TEST(NaClNonSfiSandboxTest, futex_FUTEX_WAIT_allowed,
|
| + nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| + errno = 0;
|
| + int v = 0;
|
| + struct timespec ts;
|
| + ts.tv_sec = 0;
|
| + ts.tv_nsec = 1; // 1 nanosecond.
|
| + BPF_ASSERT_EQ(-1, syscall(__NR_futex, &v, FUTEX_WAIT, 0, &ts, NULL, 0));
|
| + BPF_ASSERT_EQ(ETIMEDOUT, errno);
|
| +}
|
| +
|
| +BPF_DEATH_TEST(NaClNonSfiSandboxTest, futex_FUTEX_WAKE,
|
| + DEATH_MESSAGE(sandbox::GetErrorMessageContentForTests()),
|
| + nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| + syscall(__NR_futex, NULL, FUTEX_WAKE, 0, NULL, NULL, 0);
|
| +}
|
| +
|
| BPF_TEST(NaClNonSfiSandboxTest, prctl_SET_NAME,
|
| nacl::nonsfi::NaClNonSfiBPFSandboxPolicy::EvaluateSyscallImpl) {
|
| errno = 0;
|
|
|