Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(807)

Unified Diff: sandbox/linux/seccomp-bpf/syscall_iterator_unittest.cc

Issue 260793003: [MIPS] Add seccomp bpf support (Closed) Base URL: https://git.chromium.org/git/chromium/src.git@master
Patch Set: Fix problem with truncation of syscall value in CrashSIGSYS_Handler Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sandbox/linux/seccomp-bpf/syscall_iterator_unittest.cc
diff --git a/sandbox/linux/seccomp-bpf/syscall_iterator_unittest.cc b/sandbox/linux/seccomp-bpf/syscall_iterator_unittest.cc
index 08a857a2e2933ad03eb29406874f0e48bb99d5ef..6ae1789dd48f2bd85f3c92a00004d888dbcd00f3 100644
--- a/sandbox/linux/seccomp-bpf/syscall_iterator_unittest.cc
+++ b/sandbox/linux/seccomp-bpf/syscall_iterator_unittest.cc
@@ -35,10 +35,18 @@ SANDBOX_TEST(SyscallIterator, PublicSyscallRange) {
// The iterator should cover the public syscall range
// MIN_SYSCALL..MAX_PUBLIC_SYSCALL, without skipping syscalls.
- // We're assuming MIN_SYSCALL == 0 for all architectures,
- // this is currently valid for Intel and ARM EABI.
- SANDBOX_ASSERT(MIN_SYSCALL == 0);
- SANDBOX_ASSERT(next == MIN_SYSCALL);
+ if (MIN_SYSCALL) {
jln (very slow on Chromium) 2014/05/16 19:30:17 Let's just create Two Tests: SyscallIteratorIntelA
nedeljko 2014/05/19 17:37:23 Should I create just two tests (that would be Publ
jln (very slow on Chromium) 2014/05/20 01:57:47 No, just two tests. The problem is that the Sysca
nedeljko 2014/05/22 17:38:55 Done.
+ // When MIN_SYSCALL != 0 we need to move iterator to valid range
+ while (next < MIN_SYSCALL - 1) {
+ next = iter.Next();
+ }
+ SANDBOX_ASSERT(next == MIN_SYSCALL -1);
+ } else {
+ // We're assuming MIN_SYSCALL == 0 for Intel and ARM EABI
+ SANDBOX_ASSERT(MIN_SYSCALL == 0);
+ SANDBOX_ASSERT(next == MIN_SYSCALL);
+ }
+
for (uint32_t last = next; next < MAX_PUBLIC_SYSCALL + 1; last = next) {
SANDBOX_ASSERT((next = iter.Next()) == last + 1);
}
@@ -107,10 +115,26 @@ SANDBOX_TEST(SyscallIterator, InvalidOnly) {
bool invalid_only = true;
SyscallIterator iter(invalid_only);
uint32_t next = iter.Next();
- // We're assuming MIN_SYSCALL == 0 for all architectures,
- // this is currently valid for Intel and ARM EABI.
+ // We're assuming MIN_SYSCALL == 0 for all architectures
+ // (this is currently valid for Intel and ARM EABI), except
jln (very slow on Chromium) 2014/05/16 19:30:17 Again, let's split this into two tests, one for MI
nedeljko 2014/05/22 17:38:55 Done.
+ // for Mips O32 ABI for which MIN_SYSCALL == 4000.
// First invalid syscall should then be |MAX_PUBLIC_SYSCALL + 1|.
+#if defined(__mips__) && (_MIPS_SIM == _MIPS_SIM_ABI32)
+ SANDBOX_ASSERT(MIN_SYSCALL == 4000);
+#else
SANDBOX_ASSERT(MIN_SYSCALL == 0);
+#endif
+
+ // If MIN_SYSCALL != 0, we need to move iterator to valid range
+ if (MIN_SYSCALL) {
+ next = iter.Next();
+ // The iterator should skip until the last invalid syscall in this range.
+ SANDBOX_ASSERT(next == MIN_SYSCALL - 1);
+ while (next <= MAX_PUBLIC_SYSCALL) {
+ next = iter.Next();
+ }
+ }
+
SANDBOX_ASSERT(next == MAX_PUBLIC_SYSCALL + 1);
#if defined(__arm__)

Powered by Google App Engine
This is Rietveld 408576698