| Index: components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc
|
| diff --git a/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc b/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc
|
| index 05a730259314f3678b87e44083ca3281e2712e4a..68d1cc97e173e52dd97871c6a061d44699985093 100644
|
| --- a/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc
|
| +++ b/components/nacl/loader/sandbox_linux/nacl_sandbox_linux.cc
|
| @@ -30,12 +30,10 @@
|
| #include "sandbox/linux/services/credentials.h"
|
| #include "sandbox/linux/services/namespace_sandbox.h"
|
| #include "sandbox/linux/services/proc_util.h"
|
| +#include "sandbox/linux/services/resource_limits.h"
|
| #include "sandbox/linux/services/thread_helpers.h"
|
| #include "sandbox/linux/suid/client/setuid_sandbox_client.h"
|
|
|
| -#if !defined(OS_NACL_NONSFI)
|
| -#include "sandbox/linux/services/resource_limits.h"
|
| -#endif
|
|
|
| namespace nacl {
|
|
|
| @@ -66,10 +64,12 @@ bool MaybeSetProcessNonDumpable() {
|
| return prctl(PR_GET_DUMPABLE) == 0;
|
| }
|
|
|
| -#if !defined(OS_NACL_NONSFI)
|
| -// Currently Layer-two sandbox is not yet supported on nacl_helper_nonsfi.
|
| -// This function is used only in InitializeLayerTwoSandbox().
|
| -// TODO(hidehiko): Enable the sandbox.
|
| +// TODO(hidehiko): Move this to
|
| +// native_client/src/public/linux_syscalls/sys/resource.h
|
| +#if !defined(RLIMIT_DATA)
|
| +#define RLIMIT_DATA 2
|
| +#endif
|
| +
|
| void RestrictAddressSpaceUsage() {
|
| #if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || \
|
| defined(THREAD_SANITIZER)
|
| @@ -100,7 +100,6 @@ void RestrictAddressSpaceUsage() {
|
| #endif
|
| CHECK(sandbox::ResourceLimits::Lower(RLIMIT_AS, kNewAddressSpaceLimit));
|
| }
|
| -#endif // !OS_NACL_NONSFI
|
|
|
| } // namespace
|
|
|
| @@ -161,11 +160,6 @@ void NaClSandbox::InitializeLayerOneSandbox() {
|
| #endif // !OS_NACL_NONSFI
|
| }
|
|
|
| -#if !defined(OS_NACL_NONSFI)
|
| -// Currently Layer-two sandbox is not yet supported on nacl_helper_nonsfi.
|
| -// TODO(hidehiko): Enable the sandbox.
|
| -// Note that CheckForExpectedNumberOfOpenFds() is just referred from
|
| -// InitializeLayerTwoSandbox(). Enable them together.
|
| void NaClSandbox::CheckForExpectedNumberOfOpenFds() {
|
| // We expect to have the following FDs open:
|
| // 1-3) stdin, stdout, stderr.
|
| @@ -196,6 +190,10 @@ void NaClSandbox::InitializeLayerTwoSandbox(bool uses_nonsfi_mode) {
|
|
|
| RestrictAddressSpaceUsage();
|
|
|
| +#if defined(OS_NACL_NONSFI)
|
| + layer_two_enabled_ = nacl::nonsfi::InitializeBPFSandbox(proc_fd_.Pass());
|
| + layer_two_is_nonsfi_ = true;
|
| +#else
|
| // Pass proc_fd_ ownership to the BPF sandbox, which guarantees it will
|
| // be closed. There is no point in keeping it around since the BPF policy
|
| // will prevent its usage.
|
| @@ -205,8 +203,8 @@ void NaClSandbox::InitializeLayerTwoSandbox(bool uses_nonsfi_mode) {
|
| } else {
|
| layer_two_enabled_ = nacl::InitializeBPFSandbox(proc_fd_.Pass());
|
| }
|
| +#endif
|
| }
|
| -#endif // OS_NACL_NONSFI
|
|
|
| void NaClSandbox::SealLayerOneSandbox() {
|
| if (proc_fd_.is_valid() && !layer_two_enabled_) {
|
| @@ -238,9 +236,6 @@ void NaClSandbox::CheckSandboxingStateWithPolicy() {
|
| LOG(FATAL) << kNoSuidMsg << kItIsNotAllowedMsg;
|
| }
|
|
|
| -#if !defined(OS_NACL_NONSFI)
|
| - // Currently Layer-two sandbox is not yet supported on nacl_helper_nonsfi.
|
| - // TODO(hidehiko): Enable the sandbox.
|
| if (!layer_two_enabled_) {
|
| static const char kNoBpfMsg[] =
|
| "The seccomp-bpf sandbox is not engaged for NaCl:";
|
| @@ -249,7 +244,6 @@ void NaClSandbox::CheckSandboxingStateWithPolicy() {
|
| else
|
| LOG(FATAL) << kNoBpfMsg << kItIsNotAllowedMsg;
|
| }
|
| -#endif
|
| }
|
|
|
| } // namespace nacl
|
|
|