| Index: sandbox/linux/seccomp-bpf/sandbox_bpf.h
|
| diff --git a/sandbox/linux/seccomp-bpf/sandbox_bpf.h b/sandbox/linux/seccomp-bpf/sandbox_bpf.h
|
| index eb99d9920009f5c447ed7a321d34b70d343a4b02..6ae6f64cf9c30f463a1425646667175523f67a61 100644
|
| --- a/sandbox/linux/seccomp-bpf/sandbox_bpf.h
|
| +++ b/sandbox/linux/seccomp-bpf/sandbox_bpf.h
|
| @@ -144,6 +144,9 @@
|
|
|
| #endif
|
|
|
| +#include "sandbox/linux/seccomp-bpf/die.h"
|
| +
|
| +
|
| struct arch_seccomp_data {
|
| int nr;
|
| uint32_t arch;
|
| @@ -223,13 +226,13 @@ class Sandbox {
|
| err_ = SECCOMP_RET_ALLOW;
|
| break;
|
| case SB_INSPECT_ARG_1...SB_INSPECT_ARG_6:
|
| - die("Not implemented");
|
| + SANDBOX_DIE("Not implemented");
|
| break;
|
| case 1 ... 4095:
|
| err_ = SECCOMP_RET_ERRNO + err;
|
| break;
|
| default:
|
| - die("Invalid use of ErrorCode object");
|
| + SANDBOX_DIE("Invalid use of ErrorCode object");
|
| }
|
| }
|
|
|
| @@ -314,45 +317,6 @@ class Sandbox {
|
| static void startSandbox();
|
|
|
| protected:
|
| - // Print an error message and terminate the program. Used for fatal errors.
|
| - static void die(const char *msg) __attribute__((noreturn)) {
|
| - if (msg) {
|
| -#ifndef SECCOMP_BPF_STANDALONE
|
| - if (!dryRun_) {
|
| - // LOG(FATAL) is not neccessarily async-signal safe. It would be
|
| - // better to always use the code for the SECCOMP_BPF_STANDALONE case.
|
| - // But that prevents the logging and reporting infrastructure from
|
| - // picking up sandbox related crashes.
|
| - // For now, in picking between two evils, we decided in favor of
|
| - // LOG(FATAL). In the long run, we probably want to rewrite this code
|
| - // to be async-signal safe.
|
| - LOG(FATAL) << msg;
|
| - } else
|
| -#endif
|
| - {
|
| - // If there is no logging infrastructure in place, we just write error
|
| - // messages to stderr.
|
| - // We also write to stderr, if we are called in a child process from
|
| - // supportsSeccompSandbox(). This makes sure we can actually do the
|
| - // correct logging from the parent process, which is more likely to
|
| - // have access to logging infrastructure.
|
| - if (HANDLE_EINTR(write(2, msg, strlen(msg)))) { }
|
| - if (HANDLE_EINTR(write(2, "\n", 1))) { }
|
| - }
|
| - }
|
| - for (;;) {
|
| - // exit_group() should exit our program. After all, it is defined as a
|
| - // function that doesn't return. But things can theoretically go wrong.
|
| - // Especially, since we are dealing with system call filters. Continuing
|
| - // execution would be very bad in most cases where die() gets called.
|
| - // So, if there is no way for us to ask for the program to exit, the next
|
| - // best thing we can do is to loop indefinitely. Maybe, somebody will
|
| - // notice and file a bug...
|
| - syscall(__NR_exit_group, 1);
|
| - _exit(1);
|
| - }
|
| - }
|
| -
|
| // Get a file descriptor pointing to "/proc", if currently available.
|
| static int getProcFd() { return proc_fd_; }
|
|
|
| @@ -402,7 +366,6 @@ class Sandbox {
|
| static intptr_t bpfFailure(const struct arch_seccomp_data& data, void *aux);
|
| static int getTrapId(TrapFnc fnc, const void *aux);
|
|
|
| - static bool dryRun_;
|
| static SandboxStatus status_;
|
| static int proc_fd_;
|
| static Evaluators evaluators_;
|
|
|