aboutsummaryrefslogtreecommitdiff
path: root/devel/electron18/files/patch-content_app_content__main__runner__impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'devel/electron18/files/patch-content_app_content__main__runner__impl.cc')
-rw-r--r--devel/electron18/files/patch-content_app_content__main__runner__impl.cc120
1 files changed, 120 insertions, 0 deletions
diff --git a/devel/electron18/files/patch-content_app_content__main__runner__impl.cc b/devel/electron18/files/patch-content_app_content__main__runner__impl.cc
new file mode 100644
index 000000000000..f19af120307e
--- /dev/null
+++ b/devel/electron18/files/patch-content_app_content__main__runner__impl.cc
@@ -0,0 +1,120 @@
+--- content/app/content_main_runner_impl.cc.orig 2022-05-20 04:30:53 UTC
++++ content/app/content_main_runner_impl.cc
+@@ -130,13 +130,13 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !BUILDFLAG(IS_MAC)
++#if !BUILDFLAG(IS_MAC) && !BUILDFLAG(IS_BSD)
+ #include "content/public/common/zygote/zygote_fork_delegate_linux.h"
+ #endif
+
+ #endif // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ #include "base/native_library.h"
+ #include "base/rand_util.h"
+ #include "content/public/common/zygote/sandbox_support_linux.h"
+@@ -170,6 +170,10 @@
+ #include "media/base/media_switches.h"
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++#include "base/system/sys_info.h"
++#endif
++
+ #if BUILDFLAG(IS_ANDROID)
+ #include "base/system/sys_info.h"
+ #include "components/power_scheduler/power_scheduler.h"
+@@ -337,7 +341,7 @@ void InitializeZygoteSandboxForBrowserProcess(
+ }
+ #endif // BUILDFLAG(USE_ZYGOTE_HANDLE)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+
+ #if BUILDFLAG(ENABLE_PLUGINS)
+ // Loads the (native) libraries but does not initialize them (i.e., does not
+@@ -373,7 +377,7 @@ void PreloadLibraryCdms() {
+ }
+ #endif // BUILDFLAG(ENABLE_LIBRARY_CDMS)
+
+-#if BUILDFLAG(USE_ZYGOTE_HANDLE)
++#if BUILDFLAG(USE_ZYGOTE_HANDLE) || BUILDFLAG(IS_BSD)
+ void PreSandboxInit() {
+ // Pre-acquire resources needed by BoringSSL. See
+ // https://boringssl.googlesource.com/boringssl/+/HEAD/SANDBOXING.md
+@@ -389,6 +393,11 @@ void PreSandboxInit() {
+ #endif
+ InitializeWebRtcModule();
+
++#if BUILDFLAG(IS_BSD)
++ // "cache" the amount of physical memory before pledge(2)
++ base::SysInfo::AmountOfPhysicalMemoryMB();
++#endif
++
+ // Set the android SkFontMgr for blink. We need to ensure this is done
+ // before the sandbox is initialized to allow the font manager to access
+ // font configuration files on disk.
+@@ -558,7 +567,7 @@ int NO_STACK_PROTECTOR RunZygote(ContentMainDelegate*
+ delegate->ZygoteStarting(&zygote_fork_delegates);
+ media::InitializeMediaLibrary();
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ PreSandboxInit();
+ #endif
+
+@@ -744,11 +753,10 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam
+ kFieldTrialDescriptor + base::GlobalDescriptors::kBaseDescriptor);
+ #endif // !BUILDFLAG(IS_ANDROID)
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OPENBSD)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ g_fds->Set(kCrashDumpSignal,
+ kCrashDumpSignal + base::GlobalDescriptors::kBaseDescriptor);
+-#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) ||
+- // BUILDFLAG(IS_OPENBSD)
++#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+
+ #endif // !BUILDFLAG(IS_WIN)
+
+@@ -946,6 +954,16 @@ int ContentMainRunnerImpl::Initialize(ContentMainParam
+ }
+ #endif
+
++#if BUILDFLAG(IS_BSD)
++ if (process_type.empty()) {
++ sandbox::policy::SandboxLinux::Options sandbox_options;
++ sandbox::policy::SandboxLinux::GetInstance()->InitializeSandbox(
++ sandbox::policy::SandboxTypeFromCommandLine(
++ *base::CommandLine::ForCurrentProcess()),
++ sandbox::policy::SandboxLinux::PreSandboxHook(), sandbox_options);
++ }
++#endif
++
+ delegate_->SandboxInitialized(process_type);
+
+ #if BUILDFLAG(USE_ZYGOTE_HANDLE)
+@@ -1001,7 +1019,7 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() {
+ mojo::core::InitFeatures();
+ }
+
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
+ // If dynamic Mojo Core is being used, ensure that it's loaded very early in
+ // the child/zygote process, before any sandbox is initialized. The library
+ // is not fully initialized with IPC support until a ChildProcess is later
+@@ -1034,6 +1052,11 @@ int NO_STACK_PROTECTOR ContentMainRunnerImpl::Run() {
+ content_main_params_.reset();
+
+ RegisterMainThreadFactories();
++
++#if BUILDFLAG(IS_BSD)
++ if (!process_type.empty())
++ PreSandboxInit();
++#endif
+
+ if (process_type.empty())
+ return RunBrowser(std::move(main_params), start_minimal_browser);