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 f54882cd1fd7ba144f09c3a8943830da4cff4db0..f97efb8a17d08814614e7d6fd30a4be285d42200 100644 |
--- a/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc |
+++ b/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc |
@@ -10,6 +10,7 @@ |
#include <signal.h> |
#include <string.h> |
#include <sys/prctl.h> |
+#include <sys/resource.h> |
#include <sys/socket.h> |
#include <sys/stat.h> |
#include <sys/syscall.h> |
@@ -301,6 +302,41 @@ BPF_DEATH_TEST_C(BaselinePolicy, |
_exit(1); |
} |
+BPF_TEST_C(BaselinePolicy, GetOrSetPriority, BaselinePolicy) { |
+ errno = 0; |
+ const int original_prio = getpriority(PRIO_PROCESS, 0); |
+ // Check errno instead of the return value since this system call can return |
+ // -1 as a valid value. |
+ BPF_ASSERT_EQ(0, errno); |
+ |
+ errno = 0; |
+ int rc = getpriority(PRIO_PROCESS, getpid()); |
+ BPF_ASSERT_EQ(0, errno); |
+ |
+ rc = getpriority(PRIO_PROCESS, getpid() + 1); |
+ BPF_ASSERT_EQ(-1, rc); |
+ BPF_ASSERT_EQ(EPERM, errno); |
+ |
+ rc = setpriority(PRIO_PROCESS, 0, original_prio); |
+ BPF_ASSERT_EQ(0, rc); |
+ |
+ rc = setpriority(PRIO_PROCESS, getpid(), original_prio); |
+ BPF_ASSERT_EQ(0, rc); |
+ |
+ errno = 0; |
+ rc = setpriority(PRIO_PROCESS, getpid() + 1, original_prio); |
+ BPF_ASSERT_EQ(-1, rc); |
+ BPF_ASSERT_EQ(EPERM, errno); |
+} |
+ |
+BPF_DEATH_TEST_C(BaselinePolicy, |
+ GetPrioritySigsys, |
+ DEATH_SEGV_MESSAGE(GetErrorMessageContentForTests()), |
+ BaselinePolicy) { |
+ getpriority(PRIO_USER, 0); |
+ _exit(1); |
+} |
+ |
} // namespace |
} // namespace sandbox |