Index: chrome_frame/crash_server_init.cc |
diff --git a/chrome_frame/crash_server_init.cc b/chrome_frame/crash_server_init.cc |
deleted file mode 100644 |
index 44b404989cf475d8618e65ab776543749616a274..0000000000000000000000000000000000000000 |
--- a/chrome_frame/crash_server_init.cc |
+++ /dev/null |
@@ -1,121 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome_frame/crash_server_init.h" |
- |
-#include <sddl.h> |
-#include <Shlobj.h> |
-#include <stdlib.h> |
-#include "version.h" // NOLINT |
- |
-const wchar_t kChromePipeName[] = L"\\\\.\\pipe\\ChromeCrashServices"; |
-const wchar_t kGoogleUpdatePipeName[] = L"\\\\.\\pipe\\GoogleCrashServices\\"; |
-const wchar_t kSystemPrincipalSid[] = L"S-1-5-18"; |
- |
-const MINIDUMP_TYPE kLargerDumpType = static_cast<MINIDUMP_TYPE>( |
- MiniDumpWithProcessThreadData | // Get PEB and TEB. |
- MiniDumpWithUnloadedModules | // Get unloaded modules when available. |
- MiniDumpWithIndirectlyReferencedMemory); // Get memory referenced by stack. |
- |
-extern "C" IMAGE_DOS_HEADER __ImageBase; |
- |
-// Builds a string representation of the user's SID and places it in user_sid. |
-bool GetUserSidString(std::wstring* user_sid) { |
- bool success = false; |
- if (user_sid) { |
- struct { |
- TOKEN_USER token_user; |
- BYTE buffer[SECURITY_MAX_SID_SIZE]; |
- } token_info_buffer; |
- |
- HANDLE token = NULL; |
- if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &token)) { |
- DWORD out_size; |
- if (GetTokenInformation(token, TokenUser, &token_info_buffer.token_user, |
- sizeof(token_info_buffer), &out_size)) { |
- wchar_t* user_sid_value = NULL; |
- if (token_info_buffer.token_user.User.Sid && |
- ConvertSidToStringSid(token_info_buffer.token_user.User.Sid, |
- &user_sid_value)) { |
- *user_sid = user_sid_value; |
- LocalFree(user_sid_value); |
- user_sid_value = NULL; |
- success = true; |
- } |
- } |
- CloseHandle(token); |
- } |
- } |
- |
- return success; |
-} |
- |
-bool IsRunningSystemInstall() { |
- wchar_t exe_path[MAX_PATH * 2] = {0}; |
- GetModuleFileName(reinterpret_cast<HMODULE>(&__ImageBase), |
- exe_path, |
- _countof(exe_path)); |
- |
- bool is_system = false; |
- |
- wchar_t program_files_path[MAX_PATH] = {0}; |
- if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, |
- SHGFP_TYPE_CURRENT, program_files_path))) { |
- if (wcsstr(exe_path, program_files_path) == exe_path) { |
- is_system = true; |
- } |
- } |
- |
- return is_system; |
-} |
- |
-google_breakpad::CustomClientInfo* GetCustomInfo() { |
- static google_breakpad::CustomInfoEntry ver_entry( |
- L"ver", TEXT(CHROME_VERSION_STRING)); |
- static google_breakpad::CustomInfoEntry prod_entry(L"prod", L"ChromeFrame"); |
- static google_breakpad::CustomInfoEntry plat_entry(L"plat", L"Win32"); |
- static google_breakpad::CustomInfoEntry type_entry(L"ptype", L"chrome_frame"); |
- static google_breakpad::CustomInfoEntry entries[] = { |
- ver_entry, prod_entry, plat_entry, type_entry }; |
- static google_breakpad::CustomClientInfo custom_info = { |
- entries, ARRAYSIZE(entries) }; |
- return &custom_info; |
-} |
- |
-google_breakpad::ExceptionHandler* InitializeCrashReporting( |
- CrashReportingMode mode) { |
- wchar_t temp_path[MAX_PATH + 1] = {0}; |
- DWORD path_len = ::GetTempPath(MAX_PATH, temp_path); |
- |
- std::wstring pipe_name; |
- if (mode == HEADLESS) { |
- // This flag is used for testing, connect to the test crash service. |
- pipe_name = kChromePipeName; |
- } else { |
- // Otherwise, build a pipe name corresponding to either user or |
- // system-level Omaha. |
- pipe_name = kGoogleUpdatePipeName; |
- if (IsRunningSystemInstall()) { |
- pipe_name += kSystemPrincipalSid; |
- } else { |
- std::wstring user_sid; |
- if (GetUserSidString(&user_sid)) { |
- pipe_name += user_sid; |
- } else { |
- // We don't think we're a system install, but we couldn't get the |
- // user SID. Try connecting to the system-level crash service as a |
- // last ditch effort. |
- pipe_name += kSystemPrincipalSid; |
- } |
- } |
- } |
- |
- google_breakpad::ExceptionHandler* breakpad = |
- new google_breakpad::ExceptionHandler( |
- temp_path, NULL, NULL, NULL, |
- google_breakpad::ExceptionHandler::HANDLER_ALL, kLargerDumpType, |
- pipe_name.c_str(), GetCustomInfo()); |
- |
- return breakpad; |
-} |