Index: sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc |
diff --git a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc |
index c4a6f92c01d423521aee83ffcaf2e4cc35f4e82a..8a23af8df354f8f01853503572d2f202c0a3ef33 100644 |
--- a/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc |
+++ b/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc |
@@ -47,8 +47,14 @@ void WriteToStdErr(const char* error_message, size_t size) { |
// Print a seccomp-bpf failure to handle |sysno| to stderr in an |
// async-signal safe way. |
void PrintSyscallError(uint32_t sysno) { |
+#if defined(__mips__) |
+ // On MIPS syscall numbers are in different range than on x86 and ARM |
+ if ((sysno < __NR_Linux) || (sysno >= __NR_Linux + __NR_Linux_syscalls)) |
jln (very slow on Chromium)
2014/05/02 20:42:04
What is the value of __NR_linux?
We need to make
nedeljko
2014/05/07 15:40:05
Value of __NR_Linux for is either 4000, 5000 or 60
|
+ sysno = 0; |
+#else |
if (sysno >= 1024) |
sysno = 0; |
+#endif |
// TODO(markus): replace with async-signal safe snprintf when available. |
const size_t kNumDigits = 4; |
char sysno_base10[kNumDigits]; |
@@ -73,8 +79,14 @@ namespace sandbox { |
intptr_t CrashSIGSYS_Handler(const struct arch_seccomp_data& args, void* aux) { |
uint32_t syscall = args.nr; |
+#if defined(__mips__) |
+ // On MIPS syscall numbers are in different range than on x86 and ARM |
jln (very slow on Chromium)
2014/05/02 20:42:04
Let's make a function TruncSysnoToValu(int sysno,
nedeljko
2014/05/07 15:40:05
Done.
|
+ if ((syscall < __NR_Linux) || (syscall >= __NR_Linux + __NR_Linux_syscalls)) |
+ syscall = 0; |
+#else |
if (syscall >= 1024) |
syscall = 0; |
+#endif |
PrintSyscallError(syscall); |
// Encode 8-bits of the 1st two arguments too, so we can discern which socket |