aboutsummaryrefslogtreecommitdiff
path: root/src/processor/minidump_processor.cc
diff options
context:
space:
mode:
authornealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-08-24 14:28:10 +0000
committernealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2010-08-24 14:28:10 +0000
commit8d2c518c0b1dd6e1c956340759983f0464d356d5 (patch)
treea35535d8d6b79de9d748dce17ef1e7a7ffa8b678 /src/processor/minidump_processor.cc
parent3b7d8ee3621e1f70dc1097258743e35309823ed7 (diff)
downloadgoogle-breakpad-8d2c518c0b1dd6e1c956340759983f0464d356d5.tar.gz
Patch from CDN to add support for an exploitability engine
A=cdn R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@662 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/minidump_processor.cc')
-rw-r--r--src/processor/minidump_processor.cc27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc
index b090ecbd..057b342d 100644
--- a/src/processor/minidump_processor.cc
+++ b/src/processor/minidump_processor.cc
@@ -35,6 +35,7 @@
#include "google_breakpad/processor/call_stack.h"
#include "google_breakpad/processor/minidump.h"
#include "google_breakpad/processor/process_state.h"
+#include "google_breakpad/processor/exploitability.h"
#include "processor/logging.h"
#include "processor/scoped_ptr.h"
#include "processor/stackwalker_x86.h"
@@ -43,7 +44,15 @@ namespace google_breakpad {
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
SourceLineResolverInterface *resolver)
- : supplier_(supplier), resolver_(resolver) {
+ : supplier_(supplier), resolver_(resolver),
+ enable_exploitability_(false) {
+}
+
+MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
+ SourceLineResolverInterface *resolver,
+ bool enable_exploitability)
+ : supplier_(supplier), resolver_(resolver),
+ enable_exploitability_(enable_exploitability) {
}
MinidumpProcessor::~MinidumpProcessor() {
@@ -230,6 +239,22 @@ ProcessResult MinidumpProcessor::Process(
process_state->requesting_thread_ = -1;
}
+ // Exploitability defaults to EXPLOITABILITY_NOT_ANALYZED
+ process_state->exploitability_ = EXPLOITABILITY_NOT_ANALYZED;
+
+ // If an exploitability run was requested we perform the platform specific
+ // rating.
+ if (enable_exploitability_) {
+ scoped_ptr<Exploitability> exploitability(
+ Exploitability::ExploitabilityForPlatform(dump, process_state));
+ // The engine will be null if the platform is not supported
+ if (exploitability != NULL) {
+ process_state->exploitability_ = exploitability->CheckExploitability();
+ } else {
+ process_state->exploitability_ = EXPLOITABILITY_ERR_NOENGINE;
+ }
+ }
+
BPLOG(INFO) << "Processed " << dump->path();
return PROCESS_OK;
}