diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-01 13:05:24 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-04-01 13:05:24 +0200 |
commit | ff2f287f82630ab3887d7d5c1e64e5b888ea0beb (patch) | |
tree | 4e96cb32aa2320a327024942d247c6b56ef8c199 /toolkit/crashreporter/InjectCrashReporter.cpp | |
parent | bfc97728065cbbc7f6bbc281b654a2d1e079b48d (diff) | |
download | UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar.gz UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar.lz UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.tar.xz UXP-ff2f287f82630ab3887d7d5c1e64e5b888ea0beb.zip |
Remove crashreporter toolkit files.
Resolves #20
Diffstat (limited to 'toolkit/crashreporter/InjectCrashReporter.cpp')
-rw-r--r-- | toolkit/crashreporter/InjectCrashReporter.cpp | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/toolkit/crashreporter/InjectCrashReporter.cpp b/toolkit/crashreporter/InjectCrashReporter.cpp deleted file mode 100644 index 1b79f2cd1..000000000 --- a/toolkit/crashreporter/InjectCrashReporter.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "InjectCrashReporter.h" -#include "nsDirectoryServiceUtils.h" -#include "nsDirectoryServiceDefs.h" -#include "client/windows/crash_generation/crash_generation_client.h" -#include "nsExceptionHandler.h" -#include "LoadLibraryRemote.h" -#include "nsWindowsHelpers.h" - -using google_breakpad::CrashGenerationClient; -using CrashReporter::GetChildNotificationPipe; - -namespace mozilla { - -InjectCrashRunnable::InjectCrashRunnable(DWORD pid) - : mPID(pid) -{ - nsCOMPtr<nsIFile> dll; - nsresult rv = NS_GetSpecialDirectory(NS_GRE_DIR, getter_AddRefs(dll)); - if (NS_SUCCEEDED(rv)) { - dll->Append(NS_LITERAL_STRING("breakpadinjector.dll")); - dll->GetPath(mInjectorPath); - } -} - -NS_IMETHODIMP -InjectCrashRunnable::Run() -{ - if (mInjectorPath.IsEmpty()) - return NS_OK; - - nsAutoHandle hProcess( - OpenProcess(PROCESS_CREATE_THREAD | - PROCESS_QUERY_INFORMATION | - PROCESS_DUP_HANDLE | - PROCESS_VM_OPERATION | - PROCESS_VM_WRITE | - PROCESS_VM_READ, FALSE, mPID)); - if (!hProcess) { - NS_WARNING("Unable to open remote process handle for crashreporter injection."); - return NS_OK; - } - - void* proc = LoadRemoteLibraryAndGetAddress(hProcess, mInjectorPath.get(), - "Start"); - if (!proc) { - NS_WARNING("Unable to inject crashreporter DLL."); - return NS_OK; - } - - HANDLE hRemotePipe = - CrashGenerationClient::DuplicatePipeToClientProcess( - NS_ConvertASCIItoUTF16(GetChildNotificationPipe()).get(), - hProcess); - if (INVALID_HANDLE_VALUE == hRemotePipe) { - NS_WARNING("Unable to duplicate crash reporter pipe to process."); - return NS_OK; - } - - nsAutoHandle hThread(CreateRemoteThread(hProcess, nullptr, 0, - (LPTHREAD_START_ROUTINE) proc, - (void*) hRemotePipe, 0, nullptr)); - if (!hThread) { - NS_WARNING("Unable to CreateRemoteThread"); - - // We have to close the remote pipe or else our crash generation client - // will be stuck unable to accept other remote requests. - HANDLE toClose = INVALID_HANDLE_VALUE; - if (DuplicateHandle(hProcess, hRemotePipe, ::GetCurrentProcess(), - &toClose, 0, FALSE, - DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS)) { - CloseHandle(toClose); - return NS_OK; - } - } - - return NS_OK; -} - -} // namespace mozilla |