From d2b2bfed9465847baa82a314d4da161b368395bb Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Wed, 8 Jun 2016 00:25:08 +0000 Subject: [pdb] Try to fix use after free. llvm-svn: 272078 --- llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp') diff --git a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp index b287243d0c4..20d08f5c8ff 100644 --- a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp +++ b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp @@ -191,10 +191,12 @@ Error LLVMOutputStyle::dumpStreamData() { uint32_t StreamCount = File.getNumStreams(); StringRef DumpStreamStr = opts::DumpStreamDataIdx; uint32_t DumpStreamNum; - if (DumpStreamStr.getAsInteger(/*Radix=*/0U, DumpStreamNum) || - DumpStreamNum >= StreamCount) + if (DumpStreamStr.getAsInteger(/*Radix=*/0U, DumpStreamNum)) return Error::success(); + if (DumpStreamNum >= StreamCount) + return make_error(raw_error_code::no_stream); + MappedBlockStream S(llvm::make_unique(DumpStreamNum, File), File); codeview::StreamReader R(S); @@ -238,6 +240,8 @@ Error LLVMOutputStyle::dumpNamedStream() { InfoStream &IS = InfoS.get(); uint32_t NameStreamIndex = IS.getNamedStreamIndex(opts::DumpStreamDataName); + if (NameStreamIndex == 0 || NameStreamIndex >= File.getNumStreams()) + return make_error(raw_error_code::no_stream); if (NameStreamIndex != 0) { std::string Name("Stream '"); -- cgit v1.2.3