Restructure the minidump loading path and add early & explicit consistency checks
authorLeonard Mosescu <mosescu@google.com>
Thu, 12 Jul 2018 17:27:18 +0000 (17:27 +0000)
committerLeonard Mosescu <mosescu@google.com>
Thu, 12 Jul 2018 17:27:18 +0000 (17:27 +0000)
commit2ae3ec3b817c3fc3f8c8e2bdac41b06376b30ad2
treebd8bc2b520e9b33688448593d6262e5d8a42e1ca
parent1574e49792cbbe0521ed62ec6c2a140b11a5bf99
Restructure the minidump loading path and add early & explicit consistency checks

Corrupted minidumps was leading to unpredictable behavior.

This change adds explicit consistency checks for the minidump early on. The
checks are not comprehensive but they should catch obvious structural violations:

streams with type == 0
duplicate streams (same type)
overlapping streams
truncated minidumps

Another early check is to make sure we actually support the minidump architecture
instead of crashing at a random place deep inside LLDB.

Differential Revision: https://reviews.llvm.org/D49202

llvm-svn: 336918
lldb/source/Plugins/Process/minidump/MinidumpParser.cpp
lldb/source/Plugins/Process/minidump/MinidumpParser.h
lldb/source/Plugins/Process/minidump/MinidumpTypes.cpp
lldb/source/Plugins/Process/minidump/ProcessMinidump.cpp
lldb/unittests/Process/minidump/CMakeLists.txt
lldb/unittests/Process/minidump/Inputs/bad_duplicate_streams.dmp [new file with mode: 0644]
lldb/unittests/Process/minidump/Inputs/bad_overlapping_streams.dmp [new file with mode: 0644]
lldb/unittests/Process/minidump/MinidumpParserTest.cpp