diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2017-08-26 17:50:35 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2017-08-26 17:50:35 +0000 |
commit | 422f200cdfd54bee317d925981b24b177bd46297 (patch) | |
tree | 521e9eb77919a11073f2599fa1870977091b2b4f /lib/fuzzer | |
parent | 740573d1259e500ea7f323d213d476784c305372 (diff) |
Revert "[libFuzzer] Use custom allocators for STL containers in libFuzzer"
This reverts commit 3539efc2f2218dba2bcbd645d0fe276f2b5cf588.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@311831 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/fuzzer')
-rw-r--r-- | lib/fuzzer/FuzzerCorpus.h | 12 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerDefs.h | 17 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerDictionary.h | 2 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerDriver.cpp | 32 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerIO.cpp | 4 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerIO.h | 4 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerIOPosix.cpp | 2 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerIOWindows.cpp | 2 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerInternal.h | 8 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerLoop.cpp | 2 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerMerge.cpp | 14 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerMerge.h | 8 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerMutate.cpp | 4 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerMutate.h | 14 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerTracePC.cpp | 2 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerUtil.cpp | 2 | ||||
-rw-r--r-- | lib/fuzzer/FuzzerUtil.h | 4 | ||||
-rw-r--r-- | lib/fuzzer/tests/FuzzerUnittest.cpp | 20 |
18 files changed, 70 insertions, 83 deletions
diff --git a/lib/fuzzer/FuzzerCorpus.h b/lib/fuzzer/FuzzerCorpus.h index 844a66b25..bae0aea78 100644 --- a/lib/fuzzer/FuzzerCorpus.h +++ b/lib/fuzzer/FuzzerCorpus.h @@ -35,7 +35,7 @@ struct InputInfo { size_t NumSuccessfullMutations = 0; bool MayDeleteFile = false; bool Reduced = false; - fuzzer::vector<uint32_t> UniqFeatureSet; + std::vector<uint32_t> UniqFeatureSet; }; class InputCorpus { @@ -71,7 +71,7 @@ class InputCorpus { bool empty() const { return Inputs.empty(); } const Unit &operator[] (size_t Idx) const { return Inputs[Idx]->U; } void AddToCorpus(const Unit &U, size_t NumFeatures, bool MayDeleteFile, - const fuzzer::vector<uint32_t> &FeatureSet) { + const std::vector<uint32_t> &FeatureSet) { assert(!U.empty()); if (FeatureDebug) Printf("ADD_TO_CORPUS %zd NF %zd\n", Inputs.size(), NumFeatures); @@ -100,7 +100,7 @@ class InputCorpus { } // Debug-only - void PrintFeatureSet(const fuzzer::vector<uint32_t> &FeatureSet) { + void PrintFeatureSet(const std::vector<uint32_t> &FeatureSet) { if (!FeatureDebug) return; Printf("{"); for (uint32_t Feature: FeatureSet) @@ -256,11 +256,11 @@ private: } std::piecewise_constant_distribution<double> CorpusDistribution; - fuzzer::vector<double> Intervals; - fuzzer::vector<double> Weights; + std::vector<double> Intervals; + std::vector<double> Weights; std::unordered_set<std::string> Hashes; - fuzzer::vector<InputInfo*> Inputs; + std::vector<InputInfo*> Inputs; size_t NumAddedFeatures = 0; size_t NumUpdatedFeatures = 0; diff --git a/lib/fuzzer/FuzzerDefs.h b/lib/fuzzer/FuzzerDefs.h index 5e5d3afa2..bbb44514a 100644 --- a/lib/fuzzer/FuzzerDefs.h +++ b/lib/fuzzer/FuzzerDefs.h @@ -18,8 +18,6 @@ #include <cstring> #include <string> #include <vector> -#include <set> -#include <memory> // Platform detection. #ifdef __linux__ @@ -104,19 +102,8 @@ struct ExternalFunctions; // Global interface to functions that may or may not be available. extern ExternalFunctions *EF; -// We are using a custom allocator to give a different symbol name to STL -// containers in order to avoid ODR violations. -template<typename T> -class fuzzer_allocator: public std::allocator<T> {}; - -template<typename T> -using vector = std::vector<T, fuzzer_allocator<T>>; - -template<typename T> -using set = std::set<T, std::less<T>, fuzzer_allocator<T>>; - -typedef fuzzer::vector<uint8_t> Unit; -typedef fuzzer::vector<Unit> UnitVector; +typedef std::vector<uint8_t> Unit; +typedef std::vector<Unit> UnitVector; typedef int (*UserCallback)(const uint8_t *Data, size_t Size); int FuzzerDriver(int *argc, char ***argv, UserCallback Callback); diff --git a/lib/fuzzer/FuzzerDictionary.h b/lib/fuzzer/FuzzerDictionary.h index 01a091e3e..84cee87b8 100644 --- a/lib/fuzzer/FuzzerDictionary.h +++ b/lib/fuzzer/FuzzerDictionary.h @@ -120,7 +120,7 @@ private: bool ParseOneDictionaryEntry(const std::string &Str, Unit *U); // Parses the dictionary file, fills Units, returns true iff all lines // were parsed succesfully. -bool ParseDictionaryFile(const std::string &Text, fuzzer::vector<Unit> *Units); +bool ParseDictionaryFile(const std::string &Text, std::vector<Unit> *Units); } // namespace fuzzer diff --git a/lib/fuzzer/FuzzerDriver.cpp b/lib/fuzzer/FuzzerDriver.cpp index 1bae8702e..d0d0f7dd0 100644 --- a/lib/fuzzer/FuzzerDriver.cpp +++ b/lib/fuzzer/FuzzerDriver.cpp @@ -74,7 +74,7 @@ static const FlagDescription FlagDescriptions [] { static const size_t kNumFlags = sizeof(FlagDescriptions) / sizeof(FlagDescriptions[0]); -static fuzzer::vector<std::string> *Inputs; +static std::vector<std::string> *Inputs; static std::string *ProgName; static void PrintHelp() { @@ -175,7 +175,7 @@ static bool ParseOneFlag(const char *Param) { } // We don't use any library to minimize dependencies. -static void ParseFlags(const fuzzer::vector<std::string> &Args) { +static void ParseFlags(const std::vector<std::string> &Args) { for (size_t F = 0; F < kNumFlags; F++) { if (FlagDescriptions[F].IntFlag) *FlagDescriptions[F].IntFlag = FlagDescriptions[F].Default; @@ -185,7 +185,7 @@ static void ParseFlags(const fuzzer::vector<std::string> &Args) { if (FlagDescriptions[F].StrFlag) *FlagDescriptions[F].StrFlag = nullptr; } - Inputs = new fuzzer::vector<std::string>; + Inputs = new std::vector<std::string>; for (size_t A = 1; A < Args.size(); A++) { if (ParseOneFlag(Args[A].c_str())) { if (Flags.ignore_remaining_args) @@ -225,7 +225,7 @@ static void WorkerThread(const std::string &Cmd, std::atomic<unsigned> *Counter, } } -std::string CloneArgsWithoutX(const fuzzer::vector<std::string> &Args, +std::string CloneArgsWithoutX(const std::vector<std::string> &Args, const char *X1, const char *X2) { std::string Cmd; for (auto &S : Args) { @@ -236,12 +236,12 @@ std::string CloneArgsWithoutX(const fuzzer::vector<std::string> &Args, return Cmd; } -static int RunInMultipleProcesses(const fuzzer::vector<std::string> &Args, +static int RunInMultipleProcesses(const std::vector<std::string> &Args, unsigned NumWorkers, unsigned NumJobs) { std::atomic<unsigned> Counter(0); std::atomic<bool> HasErrors(false); std::string Cmd = CloneArgsWithoutX(Args, "jobs", "workers"); - fuzzer::vector<std::thread> V; + std::vector<std::thread> V; std::thread Pulse(PulseThread); Pulse.detach(); for (unsigned i = 0; i < NumWorkers; i++) @@ -294,7 +294,7 @@ static std::string GetDedupTokenFromFile(const std::string &Path) { return S.substr(Beg, End - Beg); } -int CleanseCrashInput(const fuzzer::vector<std::string> &Args, +int CleanseCrashInput(const std::vector<std::string> &Args, const FuzzingOptions &Options) { if (Inputs->size() != 1 || !Flags.exact_artifact_path) { Printf("ERROR: -cleanse_crash should be given one input file and" @@ -322,7 +322,7 @@ int CleanseCrashInput(const fuzzer::vector<std::string> &Args, auto U = FileToVector(CurrentFilePath); size_t Size = U.size(); - const fuzzer::vector<uint8_t> ReplacementBytes = {' ', 0xff}; + const std::vector<uint8_t> ReplacementBytes = {' ', 0xff}; for (int NumAttempts = 0; NumAttempts < 5; NumAttempts++) { bool Changed = false; for (size_t Idx = 0; Idx < Size; Idx++) { @@ -354,7 +354,7 @@ int CleanseCrashInput(const fuzzer::vector<std::string> &Args, return 0; } -int MinimizeCrashInput(const fuzzer::vector<std::string> &Args, +int MinimizeCrashInput(const std::vector<std::string> &Args, const FuzzingOptions &Options) { if (Inputs->size() != 1) { Printf("ERROR: -minimize_crash should be given one input file\n"); @@ -456,17 +456,17 @@ int MinimizeCrashInputInternalStep(Fuzzer *F, InputCorpus *Corpus) { return 0; } -int AnalyzeDictionary(Fuzzer *F, const fuzzer::vector<Unit>& Dict, +int AnalyzeDictionary(Fuzzer *F, const std::vector<Unit>& Dict, UnitVector& Corpus) { Printf("Started dictionary minimization (up to %d tests)\n", Dict.size() * Corpus.size() * 2); // Scores and usage count for each dictionary unit. - fuzzer::vector<int> Scores(Dict.size()); - fuzzer::vector<int> Usages(Dict.size()); + std::vector<int> Scores(Dict.size()); + std::vector<int> Usages(Dict.size()); - fuzzer::vector<size_t> InitialFeatures; - fuzzer::vector<size_t> ModifiedFeatures; + std::vector<size_t> InitialFeatures; + std::vector<size_t> ModifiedFeatures; for (auto &C : Corpus) { // Get coverage for the testcase without modifications. F->ExecuteCallback(C.data(), C.size()); @@ -531,7 +531,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) { EF = new ExternalFunctions(); if (EF->LLVMFuzzerInitialize) EF->LLVMFuzzerInitialize(argc, argv); - const fuzzer::vector<std::string> Args(*argv, *argv + *argc); + const std::vector<std::string> Args(*argv, *argv + *argc); assert(!Args.empty()); ProgName = new std::string(Args[0]); if (Argv0 != *ProgName) { @@ -593,7 +593,7 @@ int FuzzerDriver(int *argc, char ***argv, UserCallback Callback) { Options.ArtifactPrefix = Flags.artifact_prefix; if (Flags.exact_artifact_path) Options.ExactArtifactPath = Flags.exact_artifact_path; - fuzzer::vector<Unit> Dictionary; + std::vector<Unit> Dictionary; if (Flags.dict) if (!ParseDictionaryFile(FileToString(Flags.dict), &Dictionary)) return 1; diff --git a/lib/fuzzer/FuzzerIO.cpp b/lib/fuzzer/FuzzerIO.cpp index eeb104807..1a06d4420 100644 --- a/lib/fuzzer/FuzzerIO.cpp +++ b/lib/fuzzer/FuzzerIO.cpp @@ -68,10 +68,10 @@ void WriteToFile(const Unit &U, const std::string &Path) { fclose(Out); } -void ReadDirToVectorOfUnits(const char *Path, fuzzer::vector<Unit> *V, +void ReadDirToVectorOfUnits(const char *Path, std::vector<Unit> *V, long *Epoch, size_t MaxSize, bool ExitOnError) { long E = Epoch ? *Epoch : 0; - fuzzer::vector<std::string> Files; + std::vector<std::string> Files; ListFilesInDirRecursive(Path, Epoch, &Files, /*TopDir*/true); size_t NumLoaded = 0; for (size_t i = 0; i < Files.size(); i++) { diff --git a/lib/fuzzer/FuzzerIO.h b/lib/fuzzer/FuzzerIO.h index a404dffc4..3b66a52d1 100644 --- a/lib/fuzzer/FuzzerIO.h +++ b/lib/fuzzer/FuzzerIO.h @@ -27,7 +27,7 @@ void CopyFileToErr(const std::string &Path); void WriteToFile(const Unit &U, const std::string &Path); -void ReadDirToVectorOfUnits(const char *Path, fuzzer::vector<Unit> *V, +void ReadDirToVectorOfUnits(const char *Path, std::vector<Unit> *V, long *Epoch, size_t MaxSize, bool ExitOnError); // Returns "Dir/FileName" or equivalent for the current OS. @@ -55,7 +55,7 @@ void RawPrint(const char *Str); bool IsFile(const std::string &Path); void ListFilesInDirRecursive(const std::string &Dir, long *Epoch, - fuzzer::vector<std::string> *V, bool TopDir); + std::vector<std::string> *V, bool TopDir); char GetSeparator(); diff --git a/lib/fuzzer/FuzzerIOPosix.cpp b/lib/fuzzer/FuzzerIOPosix.cpp index d283597ad..c5ebdbac4 100644 --- a/lib/fuzzer/FuzzerIOPosix.cpp +++ b/lib/fuzzer/FuzzerIOPosix.cpp @@ -33,7 +33,7 @@ bool IsFile(const std::string &Path) { } void ListFilesInDirRecursive(const std::string &Dir, long *Epoch, - fuzzer::vector<std::string> *V, bool TopDir) { + std::vector<std::string> *V, bool TopDir) { auto E = GetEpoch(Dir); if (Epoch) if (E && *Epoch >= E) return; diff --git a/lib/fuzzer/FuzzerIOWindows.cpp b/lib/fuzzer/FuzzerIOWindows.cpp index 063d4f9f7..742520267 100644 --- a/lib/fuzzer/FuzzerIOWindows.cpp +++ b/lib/fuzzer/FuzzerIOWindows.cpp @@ -73,7 +73,7 @@ bool IsFile(const std::string &Path) { } void ListFilesInDirRecursive(const std::string &Dir, long *Epoch, - fuzzer::vector<std::string> *V, bool TopDir) { + std::vector<std::string> *V, bool TopDir) { auto E = GetEpoch(Dir); if (Epoch) if (E && *Epoch >= E) return; diff --git a/lib/fuzzer/FuzzerInternal.h b/lib/fuzzer/FuzzerInternal.h index a2af3a2f5..1d68c0190 100644 --- a/lib/fuzzer/FuzzerInternal.h +++ b/lib/fuzzer/FuzzerInternal.h @@ -69,9 +69,9 @@ public: InputInfo *II = nullptr); // Merge Corpora[1:] into Corpora[0]. - void Merge(const fuzzer::vector<std::string> &Corpora); - void CrashResistantMerge(const fuzzer::vector<std::string> &Args, - const fuzzer::vector<std::string> &Corpora, + void Merge(const std::vector<std::string> &Corpora); + void CrashResistantMerge(const std::vector<std::string> &Args, + const std::vector<std::string> &Corpora, const char *CoverageSummaryInputPathOrNull, const char *CoverageSummaryOutputPathOrNull); void CrashResistantMergeInternalStep(const std::string &ControlFilePath); @@ -139,7 +139,7 @@ private: size_t MaxMutationLen = 0; size_t TmpMaxMutationLen = 0; - fuzzer::vector<uint32_t> UniqFeatureSetTmp; + std::vector<uint32_t> UniqFeatureSetTmp; // Need to know our own thread. static thread_local bool IsMyThread; diff --git a/lib/fuzzer/FuzzerLoop.cpp b/lib/fuzzer/FuzzerLoop.cpp index d9189123a..d2d096af4 100644 --- a/lib/fuzzer/FuzzerLoop.cpp +++ b/lib/fuzzer/FuzzerLoop.cpp @@ -350,7 +350,7 @@ void Fuzzer::CheckExitOnSrcPosOrItem() { void Fuzzer::RereadOutputCorpus(size_t MaxSize) { if (Options.OutputCorpus.empty() || !Options.ReloadIntervalSec) return; - fuzzer::vector<Unit> AdditionalCorpus; + std::vector<Unit> AdditionalCorpus; ReadDirToVectorOfUnits(Options.OutputCorpus.c_str(), &AdditionalCorpus, &EpochOfLastReadOfOutputCorpus, MaxSize, /*ExitOnError*/ false); diff --git a/lib/fuzzer/FuzzerMerge.cpp b/lib/fuzzer/FuzzerMerge.cpp index a67a83490..616c0999a 100644 --- a/lib/fuzzer/FuzzerMerge.cpp +++ b/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; - fuzzer::vector<uint32_t> TmpFeatures; + std::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, - fuzzer::vector<std::string> *NewFiles) { + std::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; - fuzzer::vector<uint32_t> Tmp; + std::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 fuzzer::vector<std::string> &Args, - const fuzzer::vector<std::string> &Corpora, +void Fuzzer::CrashResistantMerge(const std::vector<std::string> &Args, + const std::vector<std::string> &Corpora, const char *CoverageSummaryInputPathOrNull, const char *CoverageSummaryOutputPathOrNull) { if (Corpora.size() <= 1) { Printf("Merge requires two or more corpus dirs\n"); return; } - fuzzer::vector<std::string> AllFiles; + std::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 fuzzer::vector<std::string> &Args, std::ofstream SummaryOut(CoverageSummaryOutputPathOrNull); M.PrintSummary(SummaryOut); } - fuzzer::vector<std::string> NewFiles; + std::vector<std::string> NewFiles; std::set<uint32_t> InitialFeatures; if (CoverageSummaryInputPathOrNull) { std::ifstream SummaryIn(CoverageSummaryInputPathOrNull); diff --git a/lib/fuzzer/FuzzerMerge.h b/lib/fuzzer/FuzzerMerge.h index dd0ad8db1..dd4c37b6e 100644 --- a/lib/fuzzer/FuzzerMerge.h +++ b/lib/fuzzer/FuzzerMerge.h @@ -52,11 +52,11 @@ namespace fuzzer { struct MergeFileInfo { std::string Name; size_t Size = 0; - fuzzer::vector<uint32_t> Features; + std::vector<uint32_t> Features; }; struct Merger { - fuzzer::vector<MergeFileInfo> Files; + std::vector<MergeFileInfo> Files; size_t NumFilesInFirstCorpus = 0; size_t FirstNotProcessedFile = 0; std::string LastFailure; @@ -67,8 +67,8 @@ struct Merger { void PrintSummary(std::ostream &OS); std::set<uint32_t> ParseSummary(std::istream &IS); size_t Merge(const std::set<uint32_t> &InitialFeatures, - fuzzer::vector<std::string> *NewFiles); - size_t Merge(fuzzer::vector<std::string> *NewFiles) { + std::vector<std::string> *NewFiles); + size_t Merge(std::vector<std::string> *NewFiles) { return Merge(std::set<uint32_t>{}, NewFiles); } size_t ApproximateMemoryConsumption() const; diff --git a/lib/fuzzer/FuzzerMutate.cpp b/lib/fuzzer/FuzzerMutate.cpp index 439ea6741..5998ef9d3 100644 --- a/lib/fuzzer/FuzzerMutate.cpp +++ b/lib/fuzzer/FuzzerMutate.cpp @@ -466,7 +466,7 @@ void MutationDispatcher::RecordSuccessfulMutationSequence() { } void MutationDispatcher::PrintRecommendedDictionary() { - fuzzer::vector<DictionaryEntry> V; + std::vector<DictionaryEntry> V; for (auto &DE : PersistentAutoDictionary) if (!ManualDictionary.ContainsWord(DE.GetW())) V.push_back(DE); @@ -506,7 +506,7 @@ size_t MutationDispatcher::DefaultMutate(uint8_t *Data, size_t Size, // Mutates Data in place, returns new size. size_t MutationDispatcher::MutateImpl(uint8_t *Data, size_t Size, size_t MaxSize, - const fuzzer::vector<Mutator> &Mutators) { + const std::vector<Mutator> &Mutators) { assert(MaxSize > 0); // Some mutations may fail (e.g. can't insert more bytes if Size == MaxSize), // in which case they will return 0. diff --git a/lib/fuzzer/FuzzerMutate.h b/lib/fuzzer/FuzzerMutate.h index d1613b22b..84b04c0db 100644 --- a/lib/fuzzer/FuzzerMutate.h +++ b/lib/fuzzer/FuzzerMutate.h @@ -96,7 +96,7 @@ private: size_t AddWordFromDictionary(Dictionary &D, uint8_t *Data, size_t Size, size_t MaxSize); size_t MutateImpl(uint8_t *Data, size_t Size, size_t MaxSize, - const fuzzer::vector<Mutator> &Mutators); + const std::vector<Mutator> &Mutators); size_t InsertPartOf(const uint8_t *From, size_t FromSize, uint8_t *To, size_t ToSize, size_t MaxToSize); @@ -128,21 +128,21 @@ private: // entries that led to successfull discoveries in the past mutations. Dictionary PersistentAutoDictionary; - fuzzer::vector<Mutator> CurrentMutatorSequence; - fuzzer::vector<DictionaryEntry *> CurrentDictionaryEntrySequence; + std::vector<Mutator> CurrentMutatorSequence; + std::vector<DictionaryEntry *> CurrentDictionaryEntrySequence; static const size_t kCmpDictionaryEntriesDequeSize = 16; DictionaryEntry CmpDictionaryEntriesDeque[kCmpDictionaryEntriesDequeSize]; size_t CmpDictionaryEntriesDequeIdx = 0; const InputCorpus *Corpus = nullptr; - fuzzer::vector<uint8_t> MutateInPlaceHere; + std::vector<uint8_t> MutateInPlaceHere; // CustomCrossOver needs its own buffer as a custom implementation may call // LLVMFuzzerMutate, which in turn may resize MutateInPlaceHere. - fuzzer::vector<uint8_t> CustomCrossOverInPlaceHere; + std::vector<uint8_t> CustomCrossOverInPlaceHere; - fuzzer::vector<Mutator> Mutators; - fuzzer::vector<Mutator> DefaultMutators; + std::vector<Mutator> Mutators; + std::vector<Mutator> DefaultMutators; }; } // namespace fuzzer diff --git a/lib/fuzzer/FuzzerTracePC.cpp b/lib/fuzzer/FuzzerTracePC.cpp index 3d348f8f9..812a6190a 100644 --- a/lib/fuzzer/FuzzerTracePC.cpp +++ b/lib/fuzzer/FuzzerTracePC.cpp @@ -270,7 +270,7 @@ void TracePC::PrintCoverage() { void TracePC::DumpCoverage() { if (EF->__sanitizer_dump_coverage) { - fuzzer::vector<uintptr_t> PCsCopy(GetNumPCs()); + std::vector<uintptr_t> PCsCopy(GetNumPCs()); for (size_t i = 0; i < GetNumPCs(); i++) PCsCopy[i] = PCs()[i] ? GetPreviousInstructionPc(PCs()[i]) : 0; EF->__sanitizer_dump_coverage(PCsCopy.data(), PCsCopy.size()); diff --git a/lib/fuzzer/FuzzerUtil.cpp b/lib/fuzzer/FuzzerUtil.cpp index 2c46d1b25..f5a777374 100644 --- a/lib/fuzzer/FuzzerUtil.cpp +++ b/lib/fuzzer/FuzzerUtil.cpp @@ -124,7 +124,7 @@ bool ParseOneDictionaryEntry(const std::string &Str, Unit *U) { return true; } -bool ParseDictionaryFile(const std::string &Text, fuzzer::vector<Unit> *Units) { +bool ParseDictionaryFile(const std::string &Text, std::vector<Unit> *Units) { if (Text.empty()) { Printf("ParseDictionaryFile: file does not exist or is empty\n"); return false; diff --git a/lib/fuzzer/FuzzerUtil.h b/lib/fuzzer/FuzzerUtil.h index c5bfb14e8..9c90040b0 100644 --- a/lib/fuzzer/FuzzerUtil.h +++ b/lib/fuzzer/FuzzerUtil.h @@ -57,10 +57,10 @@ FILE *OpenProcessPipe(const char *Command, const char *Mode); const void *SearchMemory(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen); -std::string CloneArgsWithoutX(const fuzzer::vector<std::string> &Args, +std::string CloneArgsWithoutX(const std::vector<std::string> &Args, const char *X1, const char *X2); -inline std::string CloneArgsWithoutX(const fuzzer::vector<std::string> &Args, +inline std::string CloneArgsWithoutX(const std::vector<std::string> &Args, const char *X) { return CloneArgsWithoutX(Args, X, X); } diff --git a/lib/fuzzer/tests/FuzzerUnittest.cpp b/lib/fuzzer/tests/FuzzerUnittest.cpp index feafc8ffd..858e61d75 100644 --- a/lib/fuzzer/tests/FuzzerUnittest.cpp +++ b/lib/fuzzer/tests/FuzzerUnittest.cpp @@ -526,7 +526,7 @@ TEST(FuzzerDictionary, ParseOneDictionaryEntry) { } TEST(FuzzerDictionary, ParseDictionaryFile) { - fuzzer::vector<Unit> Units; + std::vector<Unit> Units; EXPECT_FALSE(ParseDictionaryFile("zzz\n", &Units)); EXPECT_FALSE(ParseDictionaryFile("", &Units)); EXPECT_TRUE(ParseDictionaryFile("\n", &Units)); @@ -538,11 +538,11 @@ TEST(FuzzerDictionary, ParseDictionaryFile) { EXPECT_TRUE(ParseDictionaryFile(" #zzzz\n", &Units)); EXPECT_EQ(Units.size(), 0U); EXPECT_TRUE(ParseDictionaryFile(" #zzzz\naaa=\"aa\"", &Units)); - EXPECT_EQ(Units, fuzzer::vector<Unit>({Unit({'a', 'a'})})); + EXPECT_EQ(Units, std::vector<Unit>({Unit({'a', 'a'})})); EXPECT_TRUE( ParseDictionaryFile(" #zzzz\naaa=\"aa\"\n\nabc=\"abc\"", &Units)); EXPECT_EQ(Units, - fuzzer::vector<Unit>({Unit({'a', 'a'}), Unit({'a', 'b', 'c'})})); + std::vector<Unit>({Unit({'a', 'a'}), Unit({'a', 'b', 'c'})})); } TEST(FuzzerUtil, Base64) { @@ -566,7 +566,7 @@ TEST(Corpus, Distribution) { for (size_t i = 0; i < N; i++) C->AddToCorpus(Unit{ static_cast<uint8_t>(i) }, 1, false, {}); - fuzzer::vector<size_t> Hist(N); + std::vector<size_t> Hist(N); for (size_t i = 0; i < N * TriesPerUnit; i++) { Hist[C->ChooseUnitIdxToMutate(Rand)]++; } @@ -596,21 +596,21 @@ TEST(Merge, Bad) { } } -void EQ(const fuzzer::vector<uint32_t> &A, const fuzzer::vector<uint32_t> &B) { +void EQ(const std::vector<uint32_t> &A, const std::vector<uint32_t> &B) { EXPECT_EQ(A, B); } -void EQ(const fuzzer::vector<std::string> &A, const fuzzer::vector<std::string> &B) { +void EQ(const std::vector<std::string> &A, const std::vector<std::string> &B) { std::set<std::string> a(A.begin(), A.end()); std::set<std::string> b(B.begin(), B.end()); EXPECT_EQ(a, b); } static void Merge(const std::string &Input, - const fuzzer::vector<std::string> Result, + const std::vector<std::string> Result, size_t NumNewFeatures) { Merger M; - fuzzer::vector<std::string> NewFiles; + std::vector<std::string> NewFiles; EXPECT_TRUE(M.Parse(Input, true)); std::stringstream SS; M.PrintSummary(SS); @@ -658,7 +658,7 @@ TEST(Merge, Good) { EQ(M.Files[1].Features, {4, 5, 6}); - fuzzer::vector<std::string> NewFiles; + std::vector<std::string> NewFiles; EXPECT_TRUE(M.Parse("3\n2\nAA\nBB\nC\n" "STARTED 0 1000\nDONE 0 1 2 3\n" @@ -739,7 +739,7 @@ TEST(Fuzzer, ForEachNonZeroByte) { 0, 0, 0, 0, 0, 0, 0, 8, 9, 9, 9, 9, 9, 9, 9, 9, }; - typedef fuzzer::vector<std::pair<size_t, uint8_t> > Vec; + typedef std::vector<std::pair<size_t, uint8_t> > Vec; Vec Res, Expected; auto CB = [&](size_t FirstFeature, size_t Idx, uint8_t V) { Res.push_back({FirstFeature + Idx, V}); |