Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: src/processor/minidump_processor.cc

Issue 1273823004: Add check for Linux minidump ending on bad write for exploitability rating. (Closed) Base URL: http://google-breakpad.googlecode.com/svn/trunk/
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2006, Google Inc. 1 // Copyright (c) 2006, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "processor/logging.h" 44 #include "processor/logging.h"
45 #include "processor/stackwalker_x86.h" 45 #include "processor/stackwalker_x86.h"
46 #include "processor/symbolic_constants_win.h" 46 #include "processor/symbolic_constants_win.h"
47 47
48 namespace google_breakpad { 48 namespace google_breakpad {
49 49
50 MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier, 50 MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
51 SourceLineResolverInterface *resolver) 51 SourceLineResolverInterface *resolver)
52 : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)), 52 : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)),
53 own_frame_symbolizer_(true), 53 own_frame_symbolizer_(true),
54 enable_exploitability_(false) { 54 enable_exploitability_(false),
55 enable_objdump_(false) {
55 } 56 }
56 57
57 MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier, 58 MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
58 SourceLineResolverInterface *resolver, 59 SourceLineResolverInterface *resolver,
59 bool enable_exploitability) 60 bool enable_exploitability)
60 : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)), 61 : frame_symbolizer_(new StackFrameSymbolizer(supplier, resolver)),
61 own_frame_symbolizer_(true), 62 own_frame_symbolizer_(true),
62 enable_exploitability_(enable_exploitability) { 63 enable_exploitability_(enable_exploitability),
64 enable_objdump_(false) {
63 } 65 }
64 66
65 MinidumpProcessor::MinidumpProcessor(StackFrameSymbolizer *frame_symbolizer, 67 MinidumpProcessor::MinidumpProcessor(StackFrameSymbolizer *frame_symbolizer,
66 bool enable_exploitability) 68 bool enable_exploitability)
67 : frame_symbolizer_(frame_symbolizer), 69 : frame_symbolizer_(frame_symbolizer),
68 own_frame_symbolizer_(false), 70 own_frame_symbolizer_(false),
69 enable_exploitability_(enable_exploitability) { 71 enable_exploitability_(enable_exploitability),
72 enable_objdump_(false) {
70 assert(frame_symbolizer_); 73 assert(frame_symbolizer_);
71 } 74 }
72 75
73 MinidumpProcessor::~MinidumpProcessor() { 76 MinidumpProcessor::~MinidumpProcessor() {
74 if (own_frame_symbolizer_) delete frame_symbolizer_; 77 if (own_frame_symbolizer_) delete frame_symbolizer_;
75 } 78 }
76 79
77 ProcessResult MinidumpProcessor::Process( 80 ProcessResult MinidumpProcessor::Process(
78 Minidump *dump, ProcessState *process_state) { 81 Minidump *dump, ProcessState *process_state) {
79 assert(dump); 82 assert(dump);
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 process_state->requesting_thread_ = -1; 285 process_state->requesting_thread_ = -1;
283 } 286 }
284 287
285 // Exploitability defaults to EXPLOITABILITY_NOT_ANALYZED 288 // Exploitability defaults to EXPLOITABILITY_NOT_ANALYZED
286 process_state->exploitability_ = EXPLOITABILITY_NOT_ANALYZED; 289 process_state->exploitability_ = EXPLOITABILITY_NOT_ANALYZED;
287 290
288 // If an exploitability run was requested we perform the platform specific 291 // If an exploitability run was requested we perform the platform specific
289 // rating. 292 // rating.
290 if (enable_exploitability_) { 293 if (enable_exploitability_) {
291 scoped_ptr<Exploitability> exploitability( 294 scoped_ptr<Exploitability> exploitability(
292 Exploitability::ExploitabilityForPlatform(dump, process_state)); 295 Exploitability::ExploitabilityForPlatform(dump,
296 process_state,
297 enable_objdump_));
293 // The engine will be null if the platform is not supported 298 // The engine will be null if the platform is not supported
294 if (exploitability != NULL) { 299 if (exploitability != NULL) {
295 process_state->exploitability_ = exploitability->CheckExploitability(); 300 process_state->exploitability_ = exploitability->CheckExploitability();
296 } else { 301 } else {
297 process_state->exploitability_ = EXPLOITABILITY_ERR_NOENGINE; 302 process_state->exploitability_ = EXPLOITABILITY_ERR_NOENGINE;
298 } 303 }
299 } 304 }
300 305
301 BPLOG(INFO) << "Processed " << dump->path(); 306 BPLOG(INFO) << "Processed " << dump->path();
302 return PROCESS_OK; 307 return PROCESS_OK;
(...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 char assertion_line[32]; 1532 char assertion_line[32];
1528 snprintf(assertion_line, sizeof(assertion_line), "%u", raw_assertion->line); 1533 snprintf(assertion_line, sizeof(assertion_line), "%u", raw_assertion->line);
1529 assertion_string.append(" at line "); 1534 assertion_string.append(" at line ");
1530 assertion_string.append(assertion_line); 1535 assertion_string.append(assertion_line);
1531 } 1536 }
1532 1537
1533 return assertion_string; 1538 return assertion_string;
1534 } 1539 }
1535 1540
1536 } // namespace google_breakpad 1541 } // namespace google_breakpad
OLDNEW
« no previous file with comments | « src/processor/exploitability_unittest.cc ('k') | src/processor/testdata/linux_jmp_to_module_not_exe_region.dmp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698