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

Side by Side Diff: content/browser/plugin_process_host.cc

Issue 7714018: Give plug-in processes an executable heap and disable PIE/ASLR for Native (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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 | « content/browser/gpu/gpu_process_host.cc ('k') | content/browser/ppapi_broker_process_host.cc » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "content/browser/plugin_process_host.h" 5 #include "content/browser/plugin_process_host.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #elif defined(OS_POSIX) 9 #elif defined(OS_POSIX)
10 #include <utility> // for pair<> 10 #include <utility> // for pair<>
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 set_version(info_.version); 168 set_version(info_.version);
169 169
170 if (!CreateChannel()) 170 if (!CreateChannel())
171 return false; 171 return false;
172 172
173 // Build command line for plugin. When we have a plugin launcher, we can't 173 // Build command line for plugin. When we have a plugin launcher, we can't
174 // allow "self" on linux and we need the real file path. 174 // allow "self" on linux and we need the real file path.
175 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); 175 const CommandLine& browser_command_line = *CommandLine::ForCurrentProcess();
176 CommandLine::StringType plugin_launcher = 176 CommandLine::StringType plugin_launcher =
177 browser_command_line.GetSwitchValueNative(switches::kPluginLauncher); 177 browser_command_line.GetSwitchValueNative(switches::kPluginLauncher);
178 FilePath exe_path = GetChildPath(plugin_launcher.empty()); 178
179 #if defined(OS_MACOSX)
180 // Run the plug-in process in a mode tolerant of heap execution without
181 // explicit mprotect calls. Some plug-ins still rely on this quaint and
182 // archaic "feature." See http://crbug.com/93551.
183 int flags = CHILD_ALLOW_HEAP_EXECUTION;
184 #elif defined(OS_LINUX)
185 int flags = plugin_launcher.empty() ? CHILD_ALLOW_SELF : CHILD_NORMAL;
186 #else
187 int flags = CHILD_NORMAL;
188 #endif
189
190 FilePath exe_path = GetChildPath(flags);
179 if (exe_path.empty()) 191 if (exe_path.empty())
180 return false; 192 return false;
181 193
182 CommandLine* cmd_line = new CommandLine(exe_path); 194 CommandLine* cmd_line = new CommandLine(exe_path);
183 // Put the process type and plugin path first so they're easier to see 195 // Put the process type and plugin path first so they're easier to see
184 // in process listings using native process management tools. 196 // in process listings using native process management tools.
185 cmd_line->AppendSwitchASCII(switches::kProcessType, switches::kPluginProcess); 197 cmd_line->AppendSwitchASCII(switches::kProcessType, switches::kPluginProcess);
186 cmd_line->AppendSwitchPath(switches::kPluginPath, info.path); 198 cmd_line->AppendSwitchPath(switches::kPluginPath, info.path);
187 199
188 // Propagate the following switches to the plugin command line (along with 200 // Propagate the following switches to the plugin command line (along with
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 } 367 }
356 } 368 }
357 369
358 void PluginProcessHost::OnChannelCreated( 370 void PluginProcessHost::OnChannelCreated(
359 const IPC::ChannelHandle& channel_handle) { 371 const IPC::ChannelHandle& channel_handle) {
360 Client* client = sent_requests_.front(); 372 Client* client = sent_requests_.front();
361 373
362 client->OnChannelOpened(channel_handle); 374 client->OnChannelOpened(channel_handle);
363 sent_requests_.pop(); 375 sent_requests_.pop();
364 } 376 }
OLDNEW
« no previous file with comments | « content/browser/gpu/gpu_process_host.cc ('k') | content/browser/ppapi_broker_process_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698