Skip to content

Commit

Permalink
pdbdump: Fix crash bug.
Browse files Browse the repository at this point in the history
pdbdump calls DbiStreamBuilder::commit through PDBFileBuilder::commit
without calling DbiStreamBuilder::finalize. Because `finalize` initializes
`Header` member, `Header` remained nullptr which caused a crash bug.

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

llvm-svn: 277681
  • Loading branch information
rui314 committed Aug 3, 2016
1 parent 965827d commit d1d8c83
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
2 changes: 1 addition & 1 deletion llvm/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class DbiStreamBuilder {
Expected<std::unique_ptr<DbiStream>> build(PDBFile &File,
const msf::WritableStream &Buffer);
Error commit(const msf::MSFLayout &Layout,
const msf::WritableStream &Buffer) const;
const msf::WritableStream &Buffer);

private:
Error finalize();
Expand Down
5 changes: 4 additions & 1 deletion llvm/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,10 @@ DbiStreamBuilder::build(PDBFile &File, const msf::WritableStream &Buffer) {
}

Error DbiStreamBuilder::commit(const msf::MSFLayout &Layout,
const msf::WritableStream &Buffer) const {
const msf::WritableStream &Buffer) {
if (auto EC = finalize())
return EC;

auto InfoS =
WritableMappedBlockStream::createIndexedStream(Layout, Buffer, StreamDBI);

Expand Down
4 changes: 4 additions & 0 deletions llvm/test/DebugInfo/PDB/pdbdump-readwrite.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
; RUN: llvm-pdbdump pdb2yaml -dbi-module-info -dbi-module-source-info \
; RUN: -dbi-stream -pdb-stream -stream-directory -stream-metadata \
; RUN: %p/Inputs/empty.pdb > %t.1
; RUN: llvm-pdbdump yaml2pdb -pdb=%t.2 %t.1

0 comments on commit d1d8c83

Please sign in to comment.