diff options
Diffstat (limited to 'js/xpconnect/src/XPCShellImpl.cpp')
-rw-r--r-- | js/xpconnect/src/XPCShellImpl.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/js/xpconnect/src/XPCShellImpl.cpp b/js/xpconnect/src/XPCShellImpl.cpp index 124c2ed37d..f24b939fae 100644 --- a/js/xpconnect/src/XPCShellImpl.cpp +++ b/js/xpconnect/src/XPCShellImpl.cpp @@ -1106,6 +1106,10 @@ int XRE_XPCShellMain(int argc, char** argv, char** envp, // stability, we should instantiate COM ASAP so that we can ensure that these // global settings are configured before anything can interfere. mscom::ProcessRuntime mscom; + +# ifdef MOZ_SANDBOX + nsAutoString binDirPath; +# endif #endif // The provider needs to outlive the call to shutting down XPCOM. @@ -1125,6 +1129,11 @@ int XRE_XPCShellMain(int argc, char** argv, char** envp, return 1; } +#if defined(XP_WIN) && defined(MOZ_SANDBOX) + // We need the binary directory to initialize the windows sandbox. + MOZ_ALWAYS_SUCCEEDS(appDir->GetPath(binDirPath)); +#endif + dirprovider.SetAppFile(appFile); nsCOMPtr<nsIFile> greDir; @@ -1323,7 +1332,7 @@ int XRE_XPCShellMain(int argc, char** argv, char** envp, # if defined(MOZ_SANDBOX) // Required for sandboxed child processes. if (aShellData->sandboxBrokerServices) { - SandboxBroker::Initialize(aShellData->sandboxBrokerServices); + SandboxBroker::Initialize(aShellData->sandboxBrokerServices, binDirPath); SandboxBroker::GeckoDependentInitialize(); } else { NS_WARNING( |