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 1103787cb3ad48f36c97af652cc217831dc76809..bc8414d22be5572e8dcc12b2e1bc1d71f9d439b6 100644 |
--- a/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc |
+++ b/components/nacl/loader/nonsfi/nonsfi_sandbox_unittest.cc |
@@ -10,6 +10,7 @@ |
#include <errno.h> |
#include <fcntl.h> |
+#include <linux/futex.h> |
#include <pthread.h> |
#include <sched.h> |
#include <signal.h> |
@@ -32,6 +33,7 @@ |
#include "base/logging.h" |
#include "base/posix/eintr_wrapper.h" |
#include "base/sys_info.h" |
+#include "base/threading/thread.h" |
#include "base/time/time.h" |
#include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h" |
#include "sandbox/linux/seccomp-bpf/bpf_tests.h" |
@@ -306,6 +308,38 @@ BPF_DEATH_TEST_C(NaClNonSfiSandboxTest, |
fcntl(0, F_DUPFD_CLOEXEC); |
} |
+BPF_DEATH_TEST_C(NaClNonSfiSandboxTest, |
+ FutexWithRequeuePriorityInheritence, |
+ DEATH_MESSAGE(sandbox::GetFutexErrorMessageContentForTests()), |
+ nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) { |
+ syscall(__NR_futex, NULL, FUTEX_CMP_REQUEUE_PI, 0, NULL, NULL, 0); |
+ _exit(1); |
+} |
+ |
+BPF_DEATH_TEST_C(NaClNonSfiSandboxTest, |
+ FutexWithRequeuePriorityInheritencePrivate, |
+ DEATH_MESSAGE(sandbox::GetFutexErrorMessageContentForTests()), |
+ nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) { |
+ syscall(__NR_futex, NULL, FUTEX_CMP_REQUEUE_PI_PRIVATE, 0, NULL, NULL, 0); |
+ _exit(1); |
+} |
+ |
+BPF_TEST_C(NaClNonSfiSandboxTest, |
+ StartingAndJoiningThreadWorks, |
+ nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) { |
+ base::Thread thread("sandbox_tests"); |
+ BPF_ASSERT(thread.Start()); |
+ // |thread|'s destructor will join the thread. |
+} |
+ |
+BPF_DEATH_TEST_C(NaClNonSfiSandboxTest, |
+ FutexWithUnlockPIPrivate, |
+ DEATH_MESSAGE(sandbox::GetFutexErrorMessageContentForTests()), |
+ nacl::nonsfi::NaClNonSfiBPFSandboxPolicy) { |
+ syscall(__NR_futex, NULL, FUTEX_UNLOCK_PI_PRIVATE, 0, NULL, NULL, 0); |
+ _exit(1); |
+} |
+ |
void* DoAllowedAnonymousMmap() { |
return mmap(NULL, getpagesize(), PROT_READ | PROT_WRITE, |
MAP_ANONYMOUS | MAP_SHARED, -1, 0); |