#include "content/renderer/renderer_main_platform_delegate.h"
#include <errno.h>
#include <sys/stat.h>
#include "base/check_op.h"
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "content/public/common/content_features.h"
#include "content/public/common/content_switches.h"
#include "sandbox/policy/sandbox.h"
#include "sandbox/policy/sandbox_type.h"
namespace content {
RendererMainPlatformDelegate::RendererMainPlatformDelegate(
const MainFunctionParams& parameters) {}
RendererMainPlatformDelegate::~RendererMainPlatformDelegate() {
}
void RendererMainPlatformDelegate::PlatformInitialize() {
}
void RendererMainPlatformDelegate::PlatformUninitialize() {
}
bool RendererMainPlatformDelegate::EnableSandbox() {
sandbox::policy::SandboxLinux::Options options;
sandbox::policy::Sandbox::Initialize(
sandbox::policy::SandboxTypeFromCommandLine(
*base::CommandLine::ForCurrentProcess()),
sandbox::policy::SandboxLinux::PreSandboxHook(), options);
auto* linux_sandbox = sandbox::policy::SandboxLinux::GetInstance();
if (linux_sandbox->GetStatus() & sandbox::policy::SandboxLinux::kSeccompBPF) {
CHECK(linux_sandbox->seccomp_bpf_started());
}
if (linux_sandbox->GetStatus() & sandbox::policy::SandboxLinux::kSUID) {
CHECK(!base::PathExists(base::FilePath("/proc/cpuinfo")));
}
#if defined(__x86_64__)
if (linux_sandbox->seccomp_bpf_started()) {
errno = 0;
CHECK_EQ(fchmod(-1, 07777), -1);
CHECK_EQ(errno, EPERM);
}
#endif
return true;
}
}