Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: chrome/browser/nacl_host/nacl_process_host.cc

Issue 12805004: Remove mention of the nacl process in content. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/nacl_host/nacl_broker_host_win.cc ('k') | chrome/chrome_exe.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/nacl_host/nacl_process_host.h" 5 #include "chrome/browser/nacl_host/nacl_process_host.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 #include "ipc/ipc_channel_posix.h" 54 #include "ipc/ipc_channel_posix.h"
55 #elif defined(OS_WIN) 55 #elif defined(OS_WIN)
56 #include <windows.h> 56 #include <windows.h>
57 57
58 #include "base/process_util.h" 58 #include "base/process_util.h"
59 #include "base/threading/thread.h" 59 #include "base/threading/thread.h"
60 #include "base/win/scoped_handle.h" 60 #include "base/win/scoped_handle.h"
61 #include "chrome/browser/nacl_host/nacl_broker_service_win.h" 61 #include "chrome/browser/nacl_host/nacl_broker_service_win.h"
62 #include "chrome/common/nacl_debug_exception_handler_win.h" 62 #include "chrome/common/nacl_debug_exception_handler_win.h"
63 #include "content/public/common/sandbox_init.h" 63 #include "content/public/common/sandbox_init.h"
64 #include "content/public/common/sandboxed_process_launcher_delegate.h"
64 #endif 65 #endif
65 66
66 using content::BrowserThread; 67 using content::BrowserThread;
67 using content::ChildProcessData; 68 using content::ChildProcessData;
68 using content::ChildProcessHost; 69 using content::ChildProcessHost;
69 using ppapi::proxy::SerializedHandle; 70 using ppapi::proxy::SerializedHandle;
70 71
71 namespace { 72 namespace {
72 73
73 #if defined(OS_WIN) 74 #if defined(OS_WIN)
74 bool RunningOnWOW64() { 75 bool RunningOnWOW64() {
75 return (base::win::OSInfo::GetInstance()->wow64_status() == 76 return (base::win::OSInfo::GetInstance()->wow64_status() ==
76 base::win::OSInfo::WOW64_ENABLED); 77 base::win::OSInfo::WOW64_ENABLED);
77 } 78 }
78 #endif 79
80 // NOTE: changes to this class need to be reviewed by the security team.
81 class NaClSandboxedProcessLauncherDelegate
82 : public content::SandboxedProcessLauncherDelegate {
83 public:
84 NaClSandboxedProcessLauncherDelegate() {}
85 virtual ~NaClSandboxedProcessLauncherDelegate() {}
86
87 virtual void PostSpawnTarget(base::ProcessHandle process) {
88 #if !defined(NACL_WIN64)
89 // For Native Client sel_ldr processes on 32-bit Windows, reserve 1 GB of
90 // address space to prevent later failure due to address space fragmentation
91 // from .dll loading. The NaCl process will attempt to locate this space by
92 // scanning the address space using VirtualQuery.
93 // TODO(bbudge) Handle the --no-sandbox case.
94 // http://code.google.com/p/nativeclient/issues/detail?id=2131
95 const SIZE_T kOneGigabyte = 1 << 30;
96 void* nacl_mem = VirtualAllocEx(process,
97 NULL,
98 kOneGigabyte,
99 MEM_RESERVE,
100 PAGE_NOACCESS);
101 if (!nacl_mem) {
102 DLOG(WARNING) << "Failed to reserve address space for Native Client";
103 }
104 #endif // !defined(NACL_WIN64)
105 }
106 };
107
108 #endif // OS_WIN
79 109
80 void SetCloseOnExec(NaClHandle fd) { 110 void SetCloseOnExec(NaClHandle fd) {
81 #if defined(OS_POSIX) 111 #if defined(OS_POSIX)
82 int flags = fcntl(fd, F_GETFD); 112 int flags = fcntl(fd, F_GETFD);
83 CHECK_NE(flags, -1); 113 CHECK_NE(flags, -1);
84 int rc = fcntl(fd, F_SETFD, flags | FD_CLOEXEC); 114 int rc = fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
85 CHECK_EQ(rc, 0); 115 CHECK_EQ(rc, 0);
86 #endif 116 #endif
87 } 117 }
88 118
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 // On Windows we might need to start the broker process to launch a new loader 595 // On Windows we might need to start the broker process to launch a new loader
566 #if defined(OS_WIN) 596 #if defined(OS_WIN)
567 if (RunningOnWOW64()) { 597 if (RunningOnWOW64()) {
568 if (!NaClBrokerService::GetInstance()->LaunchLoader( 598 if (!NaClBrokerService::GetInstance()->LaunchLoader(
569 weak_factory_.GetWeakPtr(), channel_id)) { 599 weak_factory_.GetWeakPtr(), channel_id)) {
570 LOG(ERROR) << "NaCl process launch failed: broker service did not launch " 600 LOG(ERROR) << "NaCl process launch failed: broker service did not launch "
571 "process"; 601 "process";
572 return false; 602 return false;
573 } 603 }
574 } else { 604 } else {
575 process_->Launch(base::FilePath(), cmd_line.release()); 605 process_->Launch(new NaClSandboxedProcessLauncherDelegate,
606 cmd_line.release());
576 } 607 }
577 #elif defined(OS_POSIX) 608 #elif defined(OS_POSIX)
578 process_->Launch(nacl_loader_prefix.empty(), // use_zygote 609 process_->Launch(nacl_loader_prefix.empty(), // use_zygote
579 base::EnvironmentVector(), 610 base::EnvironmentVector(),
580 cmd_line.release()); 611 cmd_line.release());
581 #endif 612 #endif
582 613
583 return true; 614 return true;
584 } 615 }
585 616
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
939 } else { 970 } else {
940 NaClStartDebugExceptionHandlerThread( 971 NaClStartDebugExceptionHandlerThread(
941 process_handle.Take(), info, 972 process_handle.Take(), info,
942 base::MessageLoopProxy::current(), 973 base::MessageLoopProxy::current(),
943 base::Bind(&NaClProcessHost::OnDebugExceptionHandlerLaunchedByBroker, 974 base::Bind(&NaClProcessHost::OnDebugExceptionHandlerLaunchedByBroker,
944 weak_factory_.GetWeakPtr())); 975 weak_factory_.GetWeakPtr()));
945 return true; 976 return true;
946 } 977 }
947 } 978 }
948 #endif 979 #endif
OLDNEW
« no previous file with comments | « chrome/browser/nacl_host/nacl_broker_host_win.cc ('k') | chrome/chrome_exe.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698