Home | History | Annotate | Download | only in loader
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "components/nacl/loader/nacl_main_platform_delegate.h"
      6 
      7 #include "base/logging.h"
      8 #include "sandbox/win/src/sandbox.h"
      9 
     10 NaClMainPlatformDelegate::NaClMainPlatformDelegate(
     11     const content::MainFunctionParams& parameters)
     12     : parameters_(parameters) {
     13 }
     14 
     15 NaClMainPlatformDelegate::~NaClMainPlatformDelegate() {
     16 }
     17 
     18 void NaClMainPlatformDelegate::EnableSandbox() {
     19   sandbox::TargetServices* target_services =
     20       parameters_.sandbox_info->target_services;
     21 
     22   CHECK(target_services) << "NaCl-Win EnableSandbox: No Target Services!";
     23   // Cause advapi32 to load before the sandbox is turned on.
     24   unsigned int dummy_rand;
     25   rand_s(&dummy_rand);
     26   // Warm up language subsystems before the sandbox is turned on.
     27   ::GetUserDefaultLangID();
     28   ::GetUserDefaultLCID();
     29   // Turn the sandbox on.
     30   target_services->LowerToken();
     31 }
     32