[llvm] r285953 - PDB: Fix some APIs to avoid use-after-frees
Justin Bogner via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 3 11:28:05 PDT 2016
Author: bogner
Date: Thu Nov 3 13:28:04 2016
New Revision: 285953
URL: http://llvm.org/viewvc/llvm-project?rev=285953&view=rev
Log:
PDB: Fix some APIs to avoid use-after-frees
The buffer is already owned by the PDBFile for all of these APIs, so
don't pass it in separately.
Modified:
llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
llvm/trunk/include/llvm/DebugInfo/PDB/Raw/InfoStreamBuilder.h
llvm/trunk/include/llvm/DebugInfo/PDB/Raw/TpiStreamBuilder.h
llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
llvm/trunk/lib/DebugInfo/PDB/Raw/InfoStreamBuilder.cpp
llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFileBuilder.cpp
llvm/trunk/lib/DebugInfo/PDB/Raw/TpiStreamBuilder.cpp
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Raw/DbiStreamBuilder.h Thu Nov 3 13:28:04 2016
@@ -59,8 +59,7 @@ public:
Error finalizeMsfLayout();
- Expected<std::unique_ptr<DbiStream>> build(PDBFile &File,
- const msf::WritableStream &Buffer);
+ Expected<std::unique_ptr<DbiStream>> build(PDBFile &File);
Error commit(const msf::MSFLayout &Layout,
const msf::WritableStream &Buffer);
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Raw/InfoStreamBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/InfoStreamBuilder.h?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/PDB/Raw/InfoStreamBuilder.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Raw/InfoStreamBuilder.h Thu Nov 3 13:28:04 2016
@@ -43,8 +43,7 @@ public:
Error finalizeMsfLayout();
- Expected<std::unique_ptr<InfoStream>>
- build(PDBFile &File, const msf::WritableStream &Buffer);
+ Expected<std::unique_ptr<InfoStream>> build(PDBFile &File);
Error commit(const msf::MSFLayout &Layout,
const msf::WritableStream &Buffer) const;
Modified: llvm/trunk/include/llvm/DebugInfo/PDB/Raw/TpiStreamBuilder.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo/PDB/Raw/TpiStreamBuilder.h?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/include/llvm/DebugInfo/PDB/Raw/TpiStreamBuilder.h (original)
+++ llvm/trunk/include/llvm/DebugInfo/PDB/Raw/TpiStreamBuilder.h Thu Nov 3 13:28:04 2016
@@ -56,8 +56,7 @@ public:
Error finalizeMsfLayout();
- Expected<std::unique_ptr<TpiStream>> build(PDBFile &File,
- const msf::WritableStream &Buffer);
+ Expected<std::unique_ptr<TpiStream>> build(PDBFile &File);
Error commit(const msf::MSFLayout &Layout, const msf::WritableStream &Buffer);
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp Thu Nov 3 13:28:04 2016
@@ -328,15 +328,15 @@ std::vector<SecMapEntry> DbiStreamBuilde
}
Expected<std::unique_ptr<DbiStream>>
-DbiStreamBuilder::build(PDBFile &File, const msf::WritableStream &Buffer) {
+DbiStreamBuilder::build(PDBFile &File) {
if (!VerHeader.hasValue())
return make_error<RawError>(raw_error_code::unspecified,
"Missing DBI Stream Version");
if (auto EC = finalize())
return std::move(EC);
- auto StreamData = MappedBlockStream::createIndexedStream(File.getMsfLayout(),
- Buffer, StreamDBI);
+ auto StreamData = MappedBlockStream::createIndexedStream(
+ File.getMsfLayout(), File.getMsfBuffer(), StreamDBI);
auto Dbi = llvm::make_unique<DbiStream>(File, std::move(StreamData));
Dbi->Header = Header;
Dbi->FileInfoSubstream = ReadableStreamRef(FileInfoBuffer);
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/InfoStreamBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/InfoStreamBuilder.cpp?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/InfoStreamBuilder.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/InfoStreamBuilder.cpp Thu Nov 3 13:28:04 2016
@@ -48,9 +48,9 @@ Error InfoStreamBuilder::finalizeMsfLayo
}
Expected<std::unique_ptr<InfoStream>>
-InfoStreamBuilder::build(PDBFile &File, const msf::WritableStream &Buffer) {
- auto StreamData = MappedBlockStream::createIndexedStream(File.getMsfLayout(),
- Buffer, StreamPDB);
+InfoStreamBuilder::build(PDBFile &File) {
+ auto StreamData = MappedBlockStream::createIndexedStream(
+ File.getMsfLayout(), File.getMsfBuffer(), StreamPDB);
auto Info = llvm::make_unique<InfoStream>(std::move(StreamData));
Info->Version = Ver;
Info->Signature = Sig;
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFileBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFileBuilder.cpp?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFileBuilder.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/PDBFileBuilder.cpp Thu Nov 3 13:28:04 2016
@@ -97,28 +97,28 @@ PDBFileBuilder::build(std::unique_ptr<ms
File->ContainerLayout = *ExpectedLayout;
if (Info) {
- auto ExpectedInfo = Info->build(*File, *PdbFileBuffer);
+ auto ExpectedInfo = Info->build(*File);
if (!ExpectedInfo)
return ExpectedInfo.takeError();
File->Info = std::move(*ExpectedInfo);
}
if (Dbi) {
- auto ExpectedDbi = Dbi->build(*File, *PdbFileBuffer);
+ auto ExpectedDbi = Dbi->build(*File);
if (!ExpectedDbi)
return ExpectedDbi.takeError();
File->Dbi = std::move(*ExpectedDbi);
}
if (Tpi) {
- auto ExpectedTpi = Tpi->build(*File, *PdbFileBuffer);
+ auto ExpectedTpi = Tpi->build(*File);
if (!ExpectedTpi)
return ExpectedTpi.takeError();
File->Tpi = std::move(*ExpectedTpi);
}
if (Ipi) {
- auto ExpectedIpi = Ipi->build(*File, *PdbFileBuffer);
+ auto ExpectedIpi = Ipi->build(*File);
if (!ExpectedIpi)
return ExpectedIpi.takeError();
File->Ipi = std::move(*ExpectedIpi);
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/TpiStreamBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/TpiStreamBuilder.cpp?rev=285953&r1=285952&r2=285953&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/TpiStreamBuilder.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/TpiStreamBuilder.cpp Thu Nov 3 13:28:04 2016
@@ -99,16 +99,15 @@ Error TpiStreamBuilder::finalizeMsfLayou
return Error::success();
}
-Expected<std::unique_ptr<TpiStream>>
-TpiStreamBuilder::build(PDBFile &File, const msf::WritableStream &Buffer) {
+Expected<std::unique_ptr<TpiStream>> TpiStreamBuilder::build(PDBFile &File) {
if (!VerHeader.hasValue())
return make_error<RawError>(raw_error_code::unspecified,
"Missing TPI Stream Version");
if (auto EC = finalize())
return std::move(EC);
- auto StreamData =
- MappedBlockStream::createIndexedStream(File.getMsfLayout(), Buffer, Idx);
+ auto StreamData = MappedBlockStream::createIndexedStream(
+ File.getMsfLayout(), File.getMsfBuffer(), Idx);
auto Tpi = llvm::make_unique<TpiStream>(File, std::move(StreamData));
Tpi->Header = Header;
Tpi->TypeRecords = VarStreamArray<codeview::CVType>(TypeRecordStream);
More information about the llvm-commits
mailing list