diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-13 20:49:23 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-13 20:49:23 +0000 |
commit | e628fde3462899ba06af2fbc5285563c456ed5c4 (patch) | |
tree | e3ed3eb98c0044b055606bdf8628191b9b99c17c /sandbox/src/sandbox.cc | |
parent | 23d6315575647756c4be985b895ec2c447e2f088 (diff) | |
download | chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.zip chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.tar.gz chromium_src-e628fde3462899ba06af2fbc5285563c456ed5c4.tar.bz2 |
Emergency revert; rietveld broke; tree broke
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146646 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox/src/sandbox.cc')
-rw-r--r-- | sandbox/src/sandbox.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/sandbox/src/sandbox.cc b/sandbox/src/sandbox.cc new file mode 100644 index 0000000..f70c702 --- /dev/null +++ b/sandbox/src/sandbox.cc @@ -0,0 +1,51 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <stdio.h> +#include <windows.h> +#include "sandbox/src/sandbox.h" +#include "sandbox/src/sandbox_factory.h" +#include "sandbox/src/broker_services.h" +#include "sandbox/src/target_services.h" + +#if defined(_WIN64) && !defined(NACL_WIN64) +// We allow building this code for Win64 as part of NaCl to enable development +#error Sandbox code was not tested on 64-bit Windows. See \ + http://crbug.com/27218 for details and progress log. +#endif + + +namespace sandbox { +// The section for IPC and policy. +SANDBOX_INTERCEPT HANDLE g_shared_section = NULL; + +static bool s_is_broker = false; + +// GetBrokerServices: the current implementation relies on a shared section +// that is created by the broker and opened by the target. +BrokerServices* SandboxFactory::GetBrokerServices() { + // Can't be the broker if the shared section is open. + if (NULL != g_shared_section) { + return NULL; + } + // If the shared section does not exist we are the broker, then create + // the broker object. + s_is_broker = true; + return BrokerServicesBase::GetInstance(); +} + +// GetTargetServices implementation must follow the same technique as the +// GetBrokerServices, but in this case the logic is the opposite. +TargetServices* SandboxFactory::GetTargetServices() { + // Can't be the target if the section handle is not valid. + if (NULL == g_shared_section) { + return NULL; + } + // We are the target + s_is_broker = false; + // Creates and returns the target services implementation. + return TargetServicesBase::GetInstance(); +} + +} // namespace sandbox |