| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sandbox/linux/services/namespace_sandbox.h" | 5 #include "sandbox/linux/services/namespace_sandbox.h" |
| 6 | 6 |
| 7 #include <sched.h> | 7 #include <sched.h> |
| 8 #include <signal.h> | 8 #include <signal.h> |
| 9 #include <stdlib.h> | 9 #include <stdlib.h> |
| 10 #include <sys/types.h> | 10 #include <sys/types.h> |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 int g_signal_exit_codes[64]; | 70 int g_signal_exit_codes[64]; |
| 71 | 71 |
| 72 void TerminationSignalHandler(int sig) { | 72 void TerminationSignalHandler(int sig) { |
| 73 // Return a special exit code so that the process is detected as terminated by | 73 // Return a special exit code so that the process is detected as terminated by |
| 74 // a signal. | 74 // a signal. |
| 75 const size_t sig_idx = static_cast<size_t>(sig); | 75 const size_t sig_idx = static_cast<size_t>(sig); |
| 76 if (sig_idx < arraysize(g_signal_exit_codes)) { | 76 if (sig_idx < arraysize(g_signal_exit_codes)) { |
| 77 _exit(g_signal_exit_codes[sig_idx]); | 77 _exit(g_signal_exit_codes[sig_idx]); |
| 78 } | 78 } |
| 79 | 79 |
| 80 _exit(NamespaceSandbox::kDefaultExitCode); | 80 _exit(NamespaceSandbox::SignalExitCode(sig)); |
| 81 } | 81 } |
| 82 #endif // !defined(OS_NACL_NONSFI) | 82 #endif // !defined(OS_NACL_NONSFI) |
| 83 | 83 |
| 84 } // namespace | 84 } // namespace |
| 85 | 85 |
| 86 #if !defined(OS_NACL_NONSFI) | 86 #if !defined(OS_NACL_NONSFI) |
| 87 // static | 87 // static |
| 88 base::Process NamespaceSandbox::LaunchProcess( | 88 base::Process NamespaceSandbox::LaunchProcess( |
| 89 const base::CommandLine& cmdline, | 89 const base::CommandLine& cmdline, |
| 90 const base::LaunchOptions& options) { | 90 const base::LaunchOptions& options) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 return pid; | 150 return pid; |
| 151 } | 151 } |
| 152 | 152 |
| 153 // static | 153 // static |
| 154 void NamespaceSandbox::InstallDefaultTerminationSignalHandlers() { | 154 void NamespaceSandbox::InstallDefaultTerminationSignalHandlers() { |
| 155 static const int kDefaultTermSignals[] = { | 155 static const int kDefaultTermSignals[] = { |
| 156 SIGHUP, SIGINT, SIGABRT, SIGQUIT, SIGPIPE, SIGTERM, SIGUSR1, SIGUSR2, | 156 SIGHUP, SIGINT, SIGABRT, SIGQUIT, SIGPIPE, SIGTERM, SIGUSR1, SIGUSR2, |
| 157 }; | 157 }; |
| 158 | 158 |
| 159 for (const int sig : kDefaultTermSignals) { | 159 for (const int sig : kDefaultTermSignals) { |
| 160 InstallTerminationSignalHandler(sig, kDefaultExitCode); | 160 InstallTerminationSignalHandler(sig, SignalExitCode(sig)); |
| 161 } | 161 } |
| 162 } | 162 } |
| 163 | 163 |
| 164 // static | 164 // static |
| 165 bool NamespaceSandbox::InstallTerminationSignalHandler( | 165 bool NamespaceSandbox::InstallTerminationSignalHandler( |
| 166 int sig, | 166 int sig, |
| 167 int exit_code) { | 167 int exit_code) { |
| 168 struct sigaction old_action; | 168 struct sigaction old_action; |
| 169 PCHECK(sigaction(sig, nullptr, &old_action) == 0); | 169 PCHECK(sigaction(sig, nullptr, &old_action) == 0); |
| 170 | 170 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 199 bool NamespaceSandbox::InNewPidNamespace() { | 199 bool NamespaceSandbox::InNewPidNamespace() { |
| 200 return getenv(kSandboxPIDNSEnvironmentVarName) != nullptr; | 200 return getenv(kSandboxPIDNSEnvironmentVarName) != nullptr; |
| 201 } | 201 } |
| 202 | 202 |
| 203 // static | 203 // static |
| 204 bool NamespaceSandbox::InNewNetNamespace() { | 204 bool NamespaceSandbox::InNewNetNamespace() { |
| 205 return getenv(kSandboxNETNSEnvironmentVarName) != nullptr; | 205 return getenv(kSandboxNETNSEnvironmentVarName) != nullptr; |
| 206 } | 206 } |
| 207 | 207 |
| 208 } // namespace sandbox | 208 } // namespace sandbox |
| OLD | NEW |