Index: sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc |
diff --git a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc |
index c5df60627bcf30e73e4a798c4d6aa65dacf9ea90..2fa0e93c1f0837e1c1c28d3f436aec61eee62236 100644 |
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc |
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc |
@@ -9,6 +9,7 @@ |
#include <sched.h> |
#include <signal.h> |
#include <string.h> |
+#include <sys/prctl.h> |
#include <sys/socket.h> |
#include <sys/stat.h> |
#include <sys/syscall.h> |
@@ -262,6 +263,26 @@ BPF_DEATH_TEST_C(BaselinePolicy, |
} |
#endif // !defined(OS_ANDROID) |
+BPF_TEST_C(BaselinePolicy, PrctlDumpable, BaselinePolicy) { |
+ const int is_dumpable = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0); |
+ BPF_ASSERT(is_dumpable == 1 || is_dumpable == 0); |
+ const int prctl_ret = prctl(PR_SET_DUMPABLE, is_dumpable, 0, 0, 0, 0); |
+ BPF_ASSERT_EQ(0, prctl_ret); |
+} |
+ |
+// Workaround incomplete Android headers. |
+#if !defined(PR_CAPBSET_READ) |
+#define PR_CAPBSET_READ 23 |
+#endif |
+ |
+BPF_DEATH_TEST_C(BaselinePolicy, |
+ PrctlSigsys, |
+ DEATH_MESSAGE(GetPrctlErrorMessageContentForTests()), |
+ BaselinePolicy) { |
+ prctl(PR_CAPBSET_READ, 0, 0, 0, 0); |
+ _exit(1); |
+} |
+ |
} // namespace |
} // namespace sandbox |