diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2017-08-26 17:17:37 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2017-08-26 17:17:37 +0000 |
commit | d50410bfb1d1fe12e58ea777186501ab7ce1d2a0 (patch) | |
tree | 9bb6e3d7cea24b47c6f68a31555906718ab832a6 /compiler-rt/lib/fuzzer/FuzzerMerge.cpp | |
parent | de269f4620ea1a14f5537d361b41b15fb65a9110 (diff) | |
download | bcm5719-llvm-d50410bfb1d1fe12e58ea777186501ab7ce1d2a0.tar.gz bcm5719-llvm-d50410bfb1d1fe12e58ea777186501ab7ce1d2a0.zip |
[libFuzzer] Use custom allocators for STL containers in libFuzzer
Avoids ODR violations causing spurious ASAN container overflow warnings.
Differential Revision: https://reviews.llvm.org/D37086
llvm-svn: 311830
Diffstat (limited to 'compiler-rt/lib/fuzzer/FuzzerMerge.cpp')
-rw-r--r-- | compiler-rt/lib/fuzzer/FuzzerMerge.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/compiler-rt/lib/fuzzer/FuzzerMerge.cpp b/compiler-rt/lib/fuzzer/FuzzerMerge.cpp index 616c0999aa3..a67a834902d 100644 --- a/compiler-rt/lib/fuzzer/FuzzerMerge.cpp +++ b/compiler-rt/lib/fuzzer/FuzzerMerge.cpp @@ -74,7 +74,7 @@ bool Merger::Parse(std::istream &IS, bool ParseCoverage) { size_t ExpectedStartMarker = 0; const size_t kInvalidStartMarker = -1; size_t LastSeenStartMarker = kInvalidStartMarker; - std::vector<uint32_t> TmpFeatures; + fuzzer::vector<uint32_t> TmpFeatures; while (std::getline(IS, Line, '\n')) { std::istringstream ISS1(Line); std::string Marker; @@ -123,7 +123,7 @@ size_t Merger::ApproximateMemoryConsumption() const { // Decides which files need to be merged (add thost to NewFiles). // Returns the number of new features added. size_t Merger::Merge(const std::set<uint32_t> &InitialFeatures, - std::vector<std::string> *NewFiles) { + fuzzer::vector<std::string> *NewFiles) { NewFiles->clear(); assert(NumFilesInFirstCorpus <= Files.size()); std::set<uint32_t> AllFeatures(InitialFeatures); @@ -138,7 +138,7 @@ size_t Merger::Merge(const std::set<uint32_t> &InitialFeatures, // Remove all features that we already know from all other inputs. for (size_t i = NumFilesInFirstCorpus; i < Files.size(); i++) { auto &Cur = Files[i].Features; - std::vector<uint32_t> Tmp; + fuzzer::vector<uint32_t> Tmp; std::set_difference(Cur.begin(), Cur.end(), AllFeatures.begin(), AllFeatures.end(), std::inserter(Tmp, Tmp.begin())); Cur.swap(Tmp); @@ -252,15 +252,15 @@ void Fuzzer::CrashResistantMergeInternalStep(const std::string &CFPath) { } // Outer process. Does not call the target code and thus sohuld not fail. -void Fuzzer::CrashResistantMerge(const std::vector<std::string> &Args, - const std::vector<std::string> &Corpora, +void Fuzzer::CrashResistantMerge(const fuzzer::vector<std::string> &Args, + const fuzzer::vector<std::string> &Corpora, const char *CoverageSummaryInputPathOrNull, const char *CoverageSummaryOutputPathOrNull) { if (Corpora.size() <= 1) { Printf("Merge requires two or more corpus dirs\n"); return; } - std::vector<std::string> AllFiles; + fuzzer::vector<std::string> AllFiles; ListFilesInDirRecursive(Corpora[0], nullptr, &AllFiles, /*TopDir*/true); size_t NumFilesInFirstCorpus = AllFiles.size(); for (size_t i = 1; i < Corpora.size(); i++) @@ -318,7 +318,7 @@ void Fuzzer::CrashResistantMerge(const std::vector<std::string> &Args, std::ofstream SummaryOut(CoverageSummaryOutputPathOrNull); M.PrintSummary(SummaryOut); } - std::vector<std::string> NewFiles; + fuzzer::vector<std::string> NewFiles; std::set<uint32_t> InitialFeatures; if (CoverageSummaryInputPathOrNull) { std::ifstream SummaryIn(CoverageSummaryInputPathOrNull); |