OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <errno.h> | 5 #include <errno.h> |
6 #include <pthread.h> | 6 #include <pthread.h> |
7 #include <sched.h> | 7 #include <sched.h> |
8 #include <sys/prctl.h> | 8 #include <sys/prctl.h> |
9 #include <sys/syscall.h> | 9 #include <sys/syscall.h> |
10 #include <sys/time.h> | 10 #include <sys/time.h> |
11 #include <sys/types.h> | 11 #include <sys/types.h> |
12 #include <sys/utsname.h> | 12 #include <sys/utsname.h> |
13 #include <unistd.h> | 13 #include <unistd.h> |
14 | 14 |
15 #if defined(ANDROID) | 15 #if defined(ANDROID) |
16 // Work-around for buggy headers in Android's NDK | 16 // Work-around for buggy headers in Android's NDK |
17 #define __user | 17 #define __user |
18 #endif | 18 #endif |
19 #include <linux/futex.h> | 19 #include <linux/futex.h> |
20 | 20 |
21 #include <ostream> | 21 #include <ostream> |
22 | 22 |
23 #include "base/memory/scoped_ptr.h" | 23 #include "base/memory/scoped_ptr.h" |
24 #include "build/build_config.h" | 24 #include "build/build_config.h" |
25 #include "build/build_config_functions.h" | |
26 #include "sandbox/linux/seccomp-bpf/bpf_tests.h" | 25 #include "sandbox/linux/seccomp-bpf/bpf_tests.h" |
27 #include "sandbox/linux/seccomp-bpf/syscall.h" | 26 #include "sandbox/linux/seccomp-bpf/syscall.h" |
28 #include "sandbox/linux/seccomp-bpf/trap.h" | 27 #include "sandbox/linux/seccomp-bpf/trap.h" |
29 #include "sandbox/linux/seccomp-bpf/verifier.h" | 28 #include "sandbox/linux/seccomp-bpf/verifier.h" |
30 #include "sandbox/linux/services/broker_process.h" | 29 #include "sandbox/linux/services/broker_process.h" |
31 #include "sandbox/linux/services/linux_syscalls.h" | 30 #include "sandbox/linux/services/linux_syscalls.h" |
32 #include "sandbox/linux/tests/unit_tests.h" | 31 #include "sandbox/linux/tests/unit_tests.h" |
33 #include "testing/gtest/include/gtest/gtest.h" | 32 #include "testing/gtest/include/gtest/gtest.h" |
34 | 33 |
35 // Workaround for Android's prctl.h file. | 34 // Workaround for Android's prctl.h file. |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 BPF_ASSERT(buf[0] == '\x55'); | 252 BPF_ASSERT(buf[0] == '\x55'); |
254 | 253 |
255 // Verify that we can return the minimum and maximum errno values. | 254 // Verify that we can return the minimum and maximum errno values. |
256 errno = 0; | 255 errno = 0; |
257 BPF_ASSERT(setuid(0) == -1); | 256 BPF_ASSERT(setuid(0) == -1); |
258 BPF_ASSERT(errno == 1); | 257 BPF_ASSERT(errno == 1); |
259 | 258 |
260 // On Android, errno is only supported up to 255, otherwise errno | 259 // On Android, errno is only supported up to 255, otherwise errno |
261 // processing is skipped. | 260 // processing is skipped. |
262 // We work around this (crbug.com/181647). | 261 // We work around this (crbug.com/181647). |
263 if (build::IsAndroid() && setgid(0) != -1) { | 262 if (sandbox::IsAndroid() && setgid(0) != -1) { |
264 errno = 0; | 263 errno = 0; |
265 BPF_ASSERT(setgid(0) == -ErrorCode::ERR_MAX_ERRNO); | 264 BPF_ASSERT(setgid(0) == -ErrorCode::ERR_MAX_ERRNO); |
266 BPF_ASSERT(errno == 0); | 265 BPF_ASSERT(errno == 0); |
267 } else { | 266 } else { |
268 errno = 0; | 267 errno = 0; |
269 BPF_ASSERT(setgid(0) == -1); | 268 BPF_ASSERT(setgid(0) == -1); |
270 BPF_ASSERT(errno == ErrorCode::ERR_MAX_ERRNO); | 269 BPF_ASSERT(errno == ErrorCode::ERR_MAX_ERRNO); |
271 } | 270 } |
272 | 271 |
273 // Finally, test an errno in between the minimum and maximum. | 272 // Finally, test an errno in between the minimum and maximum. |
(...skipping 1500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1774 0, | 1773 0, |
1775 0, | 1774 0, |
1776 &pid) == -EPERM); | 1775 &pid) == -EPERM); |
1777 } | 1776 } |
1778 | 1777 |
1779 BPF_TEST(SandboxBpf, PthreadEquality, PthreadPolicyEquality) { PthreadTest(); } | 1778 BPF_TEST(SandboxBpf, PthreadEquality, PthreadPolicyEquality) { PthreadTest(); } |
1780 | 1779 |
1781 BPF_TEST(SandboxBpf, PthreadBitMask, PthreadPolicyBitMask) { PthreadTest(); } | 1780 BPF_TEST(SandboxBpf, PthreadBitMask, PthreadPolicyBitMask) { PthreadTest(); } |
1782 | 1781 |
1783 } // namespace | 1782 } // namespace |
OLD | NEW |