| Index: content/common/sandbox_init_linux.cc
|
| ===================================================================
|
| --- content/common/sandbox_init_linux.cc (revision 133256)
|
| +++ content/common/sandbox_init_linux.cc (working copy)
|
| @@ -289,6 +289,66 @@
|
| EmitFailSyscall(__NR_access, ENOENT, program);
|
| }
|
|
|
| +static void ApplyRendererPolicy(std::vector<struct sock_filter>* program) {
|
| + // "Hot" syscalls go first.
|
| + EmitAllowSyscall(__NR_times, program);
|
| + EmitAllowSyscall(__NR_futex, program);
|
| + EmitAllowSyscall(__NR_write, program);
|
| + EmitAllowSyscall(__NR_epoll_wait, program);
|
| + EmitAllowSyscall(__NR_nanosleep, program);
|
| + EmitAllowSyscall(__NR_madvise, program);
|
| +
|
| + EmitAllowSyscall(__NR_mmap, program);
|
| + EmitAllowSyscall(__NR_mprotect, program);
|
| + EmitAllowSyscall(__NR_clone, program);
|
| + EmitAllowSyscall(__NR_set_robust_list, program);
|
| + EmitAllowSyscall(__NR_getuid, program);
|
| + EmitAllowSyscall(__NR_geteuid, program);
|
| + EmitAllowSyscall(__NR_getgid, program);
|
| + EmitAllowSyscall(__NR_getegid, program);
|
| + EmitAllowSyscall(__NR_epoll_create, program);
|
| + EmitAllowSyscall(__NR_fcntl, program);
|
| + EmitAllowSyscall(__NR_socketpair, program);
|
| + EmitAllowSyscall(__NR_pipe, program);
|
| + EmitAllowSyscall(__NR_epoll_ctl, program);
|
| + EmitAllowSyscall(__NR_gettid, program);
|
| + EmitAllowSyscall(__NR_prctl, program);
|
| + EmitAllowSyscall(__NR_read, program);
|
| + EmitAllowSyscall(__NR_fstat, program);
|
| + EmitAllowSyscall(__NR_sendmsg, program);
|
| + EmitAllowSyscall(__NR_sched_get_priority_min, program);
|
| + EmitAllowSyscall(__NR_sched_get_priority_max, program);
|
| + EmitAllowSyscall(__NR_sched_getparam, program);
|
| + EmitAllowSyscall(__NR_sched_getscheduler, program);
|
| + EmitAllowSyscall(__NR_sched_setscheduler, program);
|
| + EmitAllowSyscall(__NR_rt_sigaction, program);
|
| + EmitAllowSyscall(__NR_recvmsg, program);
|
| + EmitAllowSyscall(__NR_dup, program);
|
| + // TODO(cevans): ioctl() in the renderer??
|
| + EmitAllowSyscall(__NR_ioctl, program);
|
| + EmitAllowSyscall(__NR_lseek, program);
|
| + EmitAllowSyscall(__NR_close, program);
|
| + EmitAllowSyscall(__NR_munmap, program);
|
| + EmitAllowSyscall(__NR_sysinfo, program);
|
| + EmitAllowSyscall(__NR_uname, program);
|
| + EmitAllowSyscall(__NR_brk, program);
|
| + EmitAllowSyscall(__NR_restart_syscall, program);
|
| + EmitAllowSyscall(__NR_exit_group, program);
|
| + EmitAllowSyscall(__NR_fdatasync, program); // HTML5 WebDatabase / sqlite.
|
| + EmitAllowSyscall(__NR_setpriority, program);
|
| + EmitAllowSyscall(__NR_exit, program);
|
| + EmitAllowSyscall(__NR_shutdown, program);
|
| + EmitAllowSyscall(__NR_pread64, program); // Seen with PDF / Pepper.
|
| +
|
| + EmitAllowSyscall(__NR_shmget, program);
|
| + EmitAllowSyscall(__NR_shmat, program);
|
| + EmitAllowSyscall(__NR_shmctl, program);
|
| + EmitAllowSyscall(__NR_shmdt, program);
|
| +
|
| + EmitFailSyscall(__NR_open, ENOENT, program);
|
| + EmitFailSyscall(__NR_stat, ENOENT, program);
|
| +}
|
| +
|
| static bool CanUseSeccompFilters() {
|
| int ret = prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, 0, 0, 0);
|
| if (ret != 0 && errno == EFAULT)
|
| @@ -336,6 +396,8 @@
|
| ApplyGPUPolicy(&program);
|
| } else if (process_type == switches::kPpapiPluginProcess) {
|
| ApplyFlashPolicy(&program);
|
| + } else if (process_type == switches::kRendererProcess) {
|
| + ApplyRendererPolicy(&program);
|
| } else {
|
| NOTREACHED();
|
| }
|
|
|