diff options
author | shrikant <shrikant@chromium.org> | 2015-04-17 10:34:43 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-17 17:34:55 +0000 |
commit | cb0da85dcf65824f96233ed77fd04d99b4c031cb (patch) | |
tree | 60978135b9e1f8eafec15b68a457f052167cffd5 /sandbox | |
parent | 44dbe9eef708acfbe06855ac0f42cc01e3627dd5 (diff) | |
download | chromium_src-cb0da85dcf65824f96233ed77fd04d99b4c031cb.zip chromium_src-cb0da85dcf65824f96233ed77fd04d99b4c031cb.tar.gz chromium_src-cb0da85dcf65824f96233ed77fd04d99b4c031cb.tar.bz2 |
Adding checks in sandbox code to get some data on AppContainer based CreateProcess failures.
Due to limited debugging options, given it doesn't repro locally, adding some checks in sandbox code to gather more data.
BUG=467920
R=jschuh@chromium.org,cpu@chromium.org
Review URL: https://codereview.chromium.org/1093443002
Cr-Commit-Position: refs/heads/master@{#325663}
Diffstat (limited to 'sandbox')
-rw-r--r-- | sandbox/win/src/target_process.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sandbox/win/src/target_process.cc b/sandbox/win/src/target_process.cc index e0284c3..2af8917 100644 --- a/sandbox/win/src/target_process.cc +++ b/sandbox/win/src/target_process.cc @@ -5,6 +5,8 @@ #include "sandbox/win/src/target_process.h" #include "base/basictypes.h" +#include "base/debug/alias.h" +#include "base/debug/dump_without_crashing.h" #include "base/memory/scoped_ptr.h" #include "base/win/pe_image.h" #include "base/win/startup_information.h" @@ -157,6 +159,10 @@ DWORD TargetProcess::Create(const wchar_t* exe_path, NULL, // Use current directory of the caller. startup_info.startup_info(), &temp_process_info)) { + // TODO(shrikant): Remove following code once we gather some dumps for + // debugging appcontainer related failures (crbug.com/467920). + base::debug::Alias(exe_path); + base::debug::DumpWithoutCrashing(); return ::GetLastError(); } } else { @@ -182,6 +188,12 @@ DWORD TargetProcess::Create(const wchar_t* exe_path, // Assign the suspended target to the windows job object. if (!::AssignProcessToJobObject(job_, process_info.process_handle())) { win_result = ::GetLastError(); + if (set_lockdown_token_after_create) { + // TODO(shrikant): Remove this code once we gather some dumps for + // debugging appcontainer related failures (crbug.com/467920). + base::debug::Alias(&win_result); + base::debug::DumpWithoutCrashing(); + } ::TerminateProcess(process_info.process_handle(), 0); return win_result; } @@ -194,6 +206,12 @@ DWORD TargetProcess::Create(const wchar_t* exe_path, HANDLE temp_thread = process_info.thread_handle(); if (!::SetThreadToken(&temp_thread, initial_token_.Get())) { win_result = ::GetLastError(); + if (set_lockdown_token_after_create) { + // TODO(shrikant): Remove this code once we gather some dumps for + // debugging appcontainer related failures (crbug.com/467920). + base::debug::Alias(&win_result); + base::debug::DumpWithoutCrashing(); + } // It might be a security breach if we let the target run outside the job // so kill it before it causes damage. ::TerminateProcess(process_info.process_handle(), 0); @@ -217,6 +235,10 @@ DWORD TargetProcess::Create(const wchar_t* exe_path, sizeof(process_access_token)); if (!NT_SUCCESS(status)) { win_result = ::GetLastError(); + // TODO(shrikant): Remove this code once we gather some dumps for + // debugging appcontainer related failures (crbug.com/467920). + base::debug::Alias(&win_result); + base::debug::DumpWithoutCrashing(); ::TerminateProcess(process_info.process_handle(), 0); // exit code return win_result; } @@ -226,6 +248,12 @@ DWORD TargetProcess::Create(const wchar_t* exe_path, context.ContextFlags = CONTEXT_ALL; if (!::GetThreadContext(process_info.thread_handle(), &context)) { win_result = ::GetLastError(); + if (set_lockdown_token_after_create) { + // TODO(shrikant): Remove this code once we gather some dumps for + // debugging appcontainer related failures (crbug.com/467920). + base::debug::Alias(&win_result); + base::debug::DumpWithoutCrashing(); + } ::TerminateProcess(process_info.process_handle(), 0); return win_result; } @@ -242,6 +270,12 @@ DWORD TargetProcess::Create(const wchar_t* exe_path, if (!target_info->DuplicateFrom(process_info)) { win_result = ::GetLastError(); // This may or may not be correct. + if (set_lockdown_token_after_create) { + // TODO(shrikant): Remove this code once we gather some dumps for + // debugging appcontainer related failures (crbug.com/467920). + base::debug::Alias(&win_result); + base::debug::DumpWithoutCrashing(); + } ::TerminateProcess(process_info.process_handle(), 0); return win_result; } |