From bf3c864c2348b01ba320b7318b9a151ce3326fe7 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Tue, 2 Feb 2021 13:58:21 -0700 Subject: [PATCH 5/5] Fix sandbox 'Aw snap' for sycalls 403 and 407 --- .../sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc | 9 ++++++++- .../syscall_parameters_restrictions_unittests.cc | 6 ++++++ .../sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc | 6 ++++++ .../sandbox/linux/system_headers/arm_linux_syscalls.h | 8 ++++++++ .../sandbox/linux/system_headers/mips_linux_syscalls.h | 8 ++++++++ 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc index 3c67b124786..e6e989d7b49 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc @@ -157,7 +157,14 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno, return Allow(); #endif - if (sysno == __NR_clock_gettime || sysno == __NR_clock_nanosleep) { + if (sysno == __NR_clock_gettime || sysno == __NR_clock_nanosleep +#if defined(__NR_clock_gettime64) + || sysno == __NR_clock_gettime64 +#endif +#if defined(__NR_clock_nanosleep_time64) + || sysno == __NR_clock_nanosleep_time64 +#endif + ) { return RestrictClockID(); } diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc index b6c8c637746..81972a9d998 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_parameters_restrictions_unittests.cc @@ -60,6 +60,12 @@ class RestrictClockIdPolicy : public bpf_dsl::Policy { case __NR_clock_gettime: case __NR_clock_getres: case __NR_clock_nanosleep: +#if defined(__NR_clock_nanosleep_time64) + case __NR_clock_nanosleep_time64: +#endif +#if defined(__NR_clock_gettime64) + case __NR_clock_gettime64: +#endif return RestrictClockID(); default: return Allow(); diff --git a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc index d9d18822f67..0db8745cb57 100644 --- a/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc +++ b/chromium/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc @@ -39,6 +39,12 @@ bool SyscallSets::IsAllowedGettime(int sysno) { // filtered by RestrictClokID(). case __NR_clock_gettime: // Parameters filtered by RestrictClockID(). case __NR_clock_nanosleep: // Parameters filtered by RestrictClockID(). +#if defined(__NR_clock_gettime64) + case __NR_clock_gettime64: // Parameters filtered by RestrictClockID(). +#endif +#if defined(__NR_clock_nanosleep_time64) + case __NR_clock_nanosleep_time64: // Parameters filtered by RestrictClockID(). +#endif case __NR_clock_settime: // Privileged. #if defined(__i386__) || \ (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) diff --git a/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h b/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h index 85e2110b4c2..c39c22b5114 100644 --- a/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h +++ b/chromium/sandbox/linux/system_headers/arm_linux_syscalls.h @@ -1441,6 +1441,14 @@ #define __NR_io_pgetevents (__NR_SYSCALL_BASE+399) #endif +#if !defined(__NR_clock_gettime64) +#define __NR_clock_gettime64 (__NR_SYSCALL_BASE+403) +#endif + +#if !defined(__NR_clock_nanosleep_time64) +#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE+407) +#endif + // ARM private syscalls. #if !defined(__ARM_NR_BASE) #define __ARM_NR_BASE (__NR_SYSCALL_BASE + 0xF0000) diff --git a/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h b/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h index ddbf97f3d8b..fa01b3bbc66 100644 --- a/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h +++ b/chromium/sandbox/linux/system_headers/mips_linux_syscalls.h @@ -1433,4 +1433,12 @@ #define __NR_memfd_create (__NR_Linux + 354) #endif +#if !defined(__NR_clock_gettime64) +#define __NR_clock_gettime64 (__NR_Linux + 403) +#endif + +#if !defined(__NR_clock_nanosleep_time64) +#define __NR_clock_nanosleep_time64 (__NR_Linux + 407) +#endif + #endif // SANDBOX_LINUX_SYSTEM_HEADERS_MIPS_LINUX_SYSCALLS_H_ -- 2.30.1