| Index: components/nacl/loader/nonsfi/nonsfi_sandbox.cc
|
| diff --git a/components/nacl/loader/nonsfi/nonsfi_sandbox.cc b/components/nacl/loader/nonsfi/nonsfi_sandbox.cc
|
| index 7ffb20e68b16160997ee7190b612eaaad7b08a6f..ff17c62cb170453fd4daf456e00b6999ab926731 100644
|
| --- a/components/nacl/loader/nonsfi/nonsfi_sandbox.cc
|
| +++ b/components/nacl/loader/nonsfi/nonsfi_sandbox.cc
|
| @@ -15,6 +15,7 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/logging.h"
|
| +#include "base/time/time.h"
|
| #include "build/build_config.h"
|
| #include "content/public/common/sandbox_init.h"
|
| #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
|
| @@ -80,19 +81,26 @@ ErrorCode RestrictClockID(SandboxBPF* sb) {
|
| // returned by {clock,pthread}_getcpuclockid), which can leak information
|
| // about the state of the host OS.
|
| COMPILE_ASSERT(4 == sizeof(clockid_t), clockid_is_not_32bit);
|
| - return sb->Cond(0, ErrorCode::TP_32BIT,
|
| - ErrorCode::OP_EQUAL, CLOCK_MONOTONIC,
|
| - ErrorCode(ErrorCode::ERR_ALLOWED),
|
| - sb->Cond(0, ErrorCode::TP_32BIT,
|
| - ErrorCode::OP_EQUAL, CLOCK_PROCESS_CPUTIME_ID,
|
| - ErrorCode(ErrorCode::ERR_ALLOWED),
|
| - sb->Cond(0, ErrorCode::TP_32BIT,
|
| - ErrorCode::OP_EQUAL, CLOCK_REALTIME,
|
| - ErrorCode(ErrorCode::ERR_ALLOWED),
|
| - sb->Cond(0, ErrorCode::TP_32BIT,
|
| - ErrorCode::OP_EQUAL, CLOCK_THREAD_CPUTIME_ID,
|
| - ErrorCode(ErrorCode::ERR_ALLOWED),
|
| - sb->Trap(sandbox::CrashSIGSYS_Handler, NULL)))));
|
| + ErrorCode result = sb->Cond(0, ErrorCode::TP_32BIT,
|
| + ErrorCode::OP_EQUAL, CLOCK_MONOTONIC,
|
| + ErrorCode(ErrorCode::ERR_ALLOWED),
|
| + sb->Cond(0, ErrorCode::TP_32BIT,
|
| + ErrorCode::OP_EQUAL, CLOCK_PROCESS_CPUTIME_ID,
|
| + ErrorCode(ErrorCode::ERR_ALLOWED),
|
| + sb->Cond(0, ErrorCode::TP_32BIT,
|
| + ErrorCode::OP_EQUAL, CLOCK_REALTIME,
|
| + ErrorCode(ErrorCode::ERR_ALLOWED),
|
| + sb->Cond(0, ErrorCode::TP_32BIT,
|
| + ErrorCode::OP_EQUAL, CLOCK_THREAD_CPUTIME_ID,
|
| + ErrorCode(ErrorCode::ERR_ALLOWED),
|
| + sb->Trap(sandbox::CrashSIGSYS_Handler, NULL)))));
|
| +#if defined(OS_CHROMEOS)
|
| + // Allow the special clock for Chrome OS used by Chrome tracing.
|
| + result = sb->Cond(0, ErrorCode::TP_32BIT,
|
| + ErrorCode::OP_EQUAL, base::TimeTicks::kClockSystemTrace,
|
| + ErrorCode(ErrorCode::ERR_ALLOWED), result);
|
| +#endif
|
| + return result;
|
| }
|
|
|
| ErrorCode RestrictClone(SandboxBPF* sb) {
|
|
|