From 58a7ad704435fa7c7c401683cdf4bcad5f67718d Mon Sep 17 00:00:00 2001 From: Asher Baker Date: Sun, 13 Jan 2019 12:34:45 +0000 Subject: [PATCH 1/2] 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 afc5f038..63d4a426 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -2766,7 +2766,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 @@ -2778,7 +2778,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. @@ -2805,7 +2812,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.17.2