summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/tools/llvm-pdbdump/fuzzer/llvm-pdbdump-fuzzer.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/tools/llvm-pdbdump/fuzzer/llvm-pdbdump-fuzzer.cpp b/llvm/tools/llvm-pdbdump/fuzzer/llvm-pdbdump-fuzzer.cpp
index a0e14360d7a..988f47dcce9 100644
--- a/llvm/tools/llvm-pdbdump/fuzzer/llvm-pdbdump-fuzzer.cpp
+++ b/llvm/tools/llvm-pdbdump/fuzzer/llvm-pdbdump-fuzzer.cpp
@@ -15,6 +15,8 @@
#include "llvm/DebugInfo/CodeView/SymbolDumper.h"
#include "llvm/DebugInfo/CodeView/TypeDumper.h"
#include "llvm/DebugInfo/PDB/Raw/DbiStream.h"
+#include "llvm/DebugInfo/PDB/Raw/IPDBStreamData.h"
+#include "llvm/DebugInfo/PDB/Raw/MappedBlockStream.h"
#include "llvm/DebugInfo/PDB/Raw/ModStream.h"
#include "llvm/DebugInfo/PDB/Raw/PDBFile.h"
#include "llvm/DebugInfo/PDB/Raw/RawSession.h"
@@ -63,7 +65,13 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t *data, size_t size) {
pdb::DbiStream &DS = DbiS.get();
for (auto &Modi : DS.modules()) {
- pdb::ModStream ModS(*File, Modi.Info);
+ auto ModStreamData = pdb::MappedBlockStream::createIndexedStream(
+ Modi.Info.getModuleStreamIndex(), *File);
+ if (!ModStreamData) {
+ consumeError(ModStreamData.takeError());
+ return 0;
+ }
+ pdb::ModStream ModS(Modi.Info, std::move(*ModStreamData));
if (auto E = ModS.reload()) {
consumeError(std::move(E));
return 0;
OpenPOWER on IntegriCloud