From 1f35257db226d6d0189cff0832a97cccc639c91a Mon Sep 17 00:00:00 2001 From: Asher Baker Date: Sun, 13 Jan 2019 12:34:45 +0000 Subject: [PATCH 1/5] Ignore invalid modules rather than bailing on the entire module list --- src/processor/minidump.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index 78faf77a..c4fda7b7 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -2774,7 +2774,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { BPLOG(ERROR) << "MinidumpModuleList could not read required module " "auxiliary data for module " << module_index << "/" << module_count; - return false; + continue; } // It is safe to use module->code_file() after successfully calling @@ -2786,7 +2786,14 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { BPLOG(ERROR) << "MinidumpModuleList found bad base address for module " << module_index << "/" << module_count << ", " << module.code_file(); - return false; + continue; + } + + if (module_size == static_cast(-1)) { + BPLOG(ERROR) << "MinidumpModuleList found bad size for module " + << module_index << "/" << module_count << ", " + << module.code_file(); + continue; } // Some minidumps have additional modules in the list that are duplicates. @@ -2813,7 +2820,7 @@ bool MinidumpModuleList::Read(uint32_t expected_size) { << module_index << "/" << module_count << ", " << module.code_file() << ", " << HexString(base_address) << "+" << HexString(module_size); - return false; + continue; } // If failed due to apparent range overlap the cause may be the client -- 2.21.0