diff options
author | mark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-08-10 15:41:19 +0000 |
---|---|---|
committer | mark@chromium.org <mark@chromium.org@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2012-08-10 15:41:19 +0000 |
commit | 066d09538f8c6c231c22fe89a4fe278e0e05acea (patch) | |
tree | 627c2fbd12ef0b21249ccde688cfa55e7fc27224 /src | |
parent | Adding a way to create an ExceptionHandler that takes in a file descriptor (diff) | |
download | breakpad-066d09538f8c6c231c22fe89a4fe278e0e05acea.tar.xz |
Make ExceptionHandler::HandleSignal() public.
Patch by Alexander Potapenko <glider@chromium.org>
Review URL: https://codereview.appspot.com/6461052/
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1008 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src')
-rw-r--r-- | src/client/linux/handler/exception_handler.cc | 10 | ||||
-rw-r--r-- | src/client/linux/handler/exception_handler.h | 2 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/client/linux/handler/exception_handler.cc b/src/client/linux/handler/exception_handler.cc index 73c3bdfb..61dc2a1a 100644 --- a/src/client/linux/handler/exception_handler.cc +++ b/src/client/linux/handler/exception_handler.cc @@ -323,6 +323,16 @@ bool ExceptionHandler::HandleSignal(int sig, siginfo_t* info, void* uc) { return GenerateDump(&context); } +// This is a public interface to HandleSignal that allows the client to +// generate a crash dump. This function may run in a compromised context. +bool ExceptionHandler::SimulateSignalDelivery(int sig) { + siginfo_t siginfo; + my_memset(&siginfo, 0, sizeof(siginfo_t)); + struct ucontext context; + getcontext(&context); + return HandleSignal(sig, &siginfo, &context); +} + // This function may run in a compromised context: see the top of the file. bool ExceptionHandler::GenerateDump(CrashContext *context) { if (IsOutOfProcess()) diff --git a/src/client/linux/handler/exception_handler.h b/src/client/linux/handler/exception_handler.h index c339b7dd..f66b8270 100644 --- a/src/client/linux/handler/exception_handler.h +++ b/src/client/linux/handler/exception_handler.h @@ -193,6 +193,8 @@ class ExceptionHandler { size_t mapping_size, size_t file_offset); + // Force signal handling for the specified signal. + bool SimulateSignalDelivery(int sig); private: bool InstallHandlers(); void UninstallHandlers(); |