003 File Manager
Current Path:
/usr/src/contrib/llvm-project/compiler-rt/lib/fuzzer
usr
/
src
/
contrib
/
llvm-project
/
compiler-rt
/
lib
/
fuzzer
/
📁
..
📄
FuzzerBuiltins.h
(1.25 KB)
📄
FuzzerBuiltinsMsvc.h
(2.33 KB)
📄
FuzzerCommand.h
(5.95 KB)
📄
FuzzerCorpus.h
(16.93 KB)
📄
FuzzerCrossOver.cpp
(1.85 KB)
📄
FuzzerDataFlowTrace.cpp
(9.93 KB)
📄
FuzzerDataFlowTrace.h
(3.98 KB)
📄
FuzzerDefs.h
(1.99 KB)
📄
FuzzerDictionary.h
(3.32 KB)
📄
FuzzerDriver.cpp
(28.35 KB)
📄
FuzzerExtFunctions.def
(2.5 KB)
📄
FuzzerExtFunctions.h
(1.04 KB)
📄
FuzzerExtFunctionsDlsym.cpp
(1.63 KB)
📄
FuzzerExtFunctionsWeak.cpp
(1.9 KB)
📄
FuzzerExtFunctionsWindows.cpp
(2.79 KB)
📄
FuzzerExtraCounters.cpp
(1.55 KB)
📄
FuzzerFlags.def
(10.02 KB)
📄
FuzzerFork.cpp
(12.53 KB)
📄
FuzzerFork.h
(778 B)
📄
FuzzerIO.cpp
(4.47 KB)
📄
FuzzerIO.h
(3.31 KB)
📄
FuzzerIOPosix.cpp
(4.47 KB)
📄
FuzzerIOWindows.cpp
(11.59 KB)
📄
FuzzerInterface.h
(3.03 KB)
📄
FuzzerInternal.h
(5.33 KB)
📄
FuzzerLoop.cpp
(28.54 KB)
📄
FuzzerMain.cpp
(791 B)
📄
FuzzerMerge.cpp
(13.75 KB)
📄
FuzzerMerge.h
(3.31 KB)
📄
FuzzerMutate.cpp
(20.02 KB)
📄
FuzzerMutate.h
(6.57 KB)
📄
FuzzerOptions.h
(2.36 KB)
📄
FuzzerPlatform.h
(4.69 KB)
📄
FuzzerRandom.h
(1.21 KB)
📄
FuzzerSHA1.cpp
(5.56 KB)
📄
FuzzerSHA1.h
(978 B)
📄
FuzzerTracePC.cpp
(22.56 KB)
📄
FuzzerTracePC.h
(8.87 KB)
📄
FuzzerUtil.cpp
(6.75 KB)
📄
FuzzerUtil.h
(3.25 KB)
📄
FuzzerUtilDarwin.cpp
(5.87 KB)
📄
FuzzerUtilFuchsia.cpp
(20.16 KB)
📄
FuzzerUtilLinux.cpp
(1.12 KB)
📄
FuzzerUtilPosix.cpp
(5.07 KB)
📄
FuzzerUtilWindows.cpp
(5.93 KB)
📄
FuzzerValueBitMap.h
(2.24 KB)
📄
README.txt
(40 B)
Editing: FuzzerDictionary.h
//===- FuzzerDictionary.h - Internal header for the Fuzzer ------*- C++ -* ===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // fuzzer::Dictionary //===----------------------------------------------------------------------===// #ifndef LLVM_FUZZER_DICTIONARY_H #define LLVM_FUZZER_DICTIONARY_H #include "FuzzerDefs.h" #include "FuzzerIO.h" #include "FuzzerUtil.h" #include <algorithm> #include <limits> namespace fuzzer { // A simple POD sized array of bytes. template <size_t kMaxSizeT> class FixedWord { public: static const size_t kMaxSize = kMaxSizeT; FixedWord() {} FixedWord(const uint8_t *B, uint8_t S) { Set(B, S); } void Set(const uint8_t *B, uint8_t S) { assert(S <= kMaxSize); memcpy(Data, B, S); Size = S; } bool operator==(const FixedWord<kMaxSize> &w) const { return Size == w.Size && 0 == memcmp(Data, w.Data, Size); } static size_t GetMaxSize() { return kMaxSize; } const uint8_t *data() const { return Data; } uint8_t size() const { return Size; } private: uint8_t Size = 0; uint8_t Data[kMaxSize]; }; typedef FixedWord<64> Word; class DictionaryEntry { public: DictionaryEntry() {} DictionaryEntry(Word W) : W(W) {} DictionaryEntry(Word W, size_t PositionHint) : W(W), PositionHint(PositionHint) {} const Word &GetW() const { return W; } bool HasPositionHint() const { return PositionHint != std::numeric_limits<size_t>::max(); } size_t GetPositionHint() const { assert(HasPositionHint()); return PositionHint; } void IncUseCount() { UseCount++; } void IncSuccessCount() { SuccessCount++; } size_t GetUseCount() const { return UseCount; } size_t GetSuccessCount() const {return SuccessCount; } void Print(const char *PrintAfter = "\n") { PrintASCII(W.data(), W.size()); if (HasPositionHint()) Printf("@%zd", GetPositionHint()); Printf("%s", PrintAfter); } private: Word W; size_t PositionHint = std::numeric_limits<size_t>::max(); size_t UseCount = 0; size_t SuccessCount = 0; }; class Dictionary { public: static const size_t kMaxDictSize = 1 << 14; bool ContainsWord(const Word &W) const { return std::any_of(begin(), end(), [&](const DictionaryEntry &DE) { return DE.GetW() == W; }); } const DictionaryEntry *begin() const { return &DE[0]; } const DictionaryEntry *end() const { return begin() + Size; } DictionaryEntry & operator[] (size_t Idx) { assert(Idx < Size); return DE[Idx]; } void push_back(DictionaryEntry DE) { if (Size < kMaxDictSize) this->DE[Size++] = DE; } void clear() { Size = 0; } bool empty() const { return Size == 0; } size_t size() const { return Size; } private: DictionaryEntry DE[kMaxDictSize]; size_t Size = 0; }; // Parses one dictionary entry. // If successful, write the enty to Unit and returns true, // otherwise returns false. bool ParseOneDictionaryEntry(const std::string &Str, Unit *U); // Parses the dictionary file, fills Units, returns true iff all lines // were parsed successfully. bool ParseDictionaryFile(const std::string &Text, Vector<Unit> *Units); } // namespace fuzzer #endif // LLVM_FUZZER_DICTIONARY_H
Upload File
Create Folder