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

Unified Diff: sandbox/win/src/target_process.cc

Issue 10878071: Move STARTUPINFO manipulation into SpawnTarget (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sandbox/win/src/target_process.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sandbox/win/src/target_process.cc
===================================================================
--- sandbox/win/src/target_process.cc (revision 153543)
+++ sandbox/win/src/target_process.cc (working copy)
@@ -7,6 +7,7 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
#include "base/win/pe_image.h"
+#include "base/win/startup_information.h"
#include "base/win/windows_version.h"
#include "sandbox/win/src/crosscall_server.h"
#include "sandbox/win/src/crosscall_client.h"
@@ -130,29 +131,26 @@
// object.
DWORD TargetProcess::Create(const wchar_t* exe_path,
const wchar_t* command_line,
- const wchar_t* desktop,
+ const base::win::StartupInformation& startup_info,
base::win::ScopedProcessInformation* target_info) {
exe_name_.reset(_wcsdup(exe_path));
// the command line needs to be writable by CreateProcess().
scoped_ptr_malloc<wchar_t> cmd_line(_wcsdup(command_line));
- scoped_ptr_malloc<wchar_t> desktop_name(desktop ? _wcsdup(desktop) : NULL);
// Start the target process suspended.
DWORD flags =
CREATE_SUSPENDED | CREATE_UNICODE_ENVIRONMENT | DETACHED_PROCESS;
+ if (startup_info.has_extended_startup_info())
+ flags |= EXTENDED_STARTUPINFO_PRESENT;
+
if (base::win::GetVersion() < base::win::VERSION_WIN8) {
// Windows 8 implements nested jobs, but for older systems we need to
// break out of any job we're in to enforce our restrictions.
flags |= CREATE_BREAKAWAY_FROM_JOB;
}
- STARTUPINFO startup_info = {sizeof(STARTUPINFO)};
- if (desktop) {
- startup_info.lpDesktop = desktop_name.get();
- }
-
base::win::ScopedProcessInformation process_info;
if (!::CreateProcessAsUserW(lockdown_token_,
@@ -164,7 +162,7 @@
flags,
NULL, // Use the environment of the caller.
NULL, // Use current directory of the caller.
- &startup_info,
+ startup_info.startup_info(),
process_info.Receive())) {
return ::GetLastError();
}
« no previous file with comments | « sandbox/win/src/target_process.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698