Home | History | Annotate | Download | only in Fuzzer

Lines Matching refs:Size

21   size_t (MutationDispatcher::*Fn)(uint8_t *Data, size_t Size, size_t Max);
41 void AddWordToDictionary(const uint8_t *Word, size_t Size) {
45 Dictionary.push_back(Unit(Word, Word + Size));
68 size_t MutationDispatcher::Mutate_ShuffleBytes(uint8_t *Data, size_t Size,
70 assert(Size);
71 size_t ShuffleAmount = Rand(std::min(Size, (size_t)8)) + 1; // [1,8] and <= Size.
72 size_t ShuffleStart = Rand(Size - ShuffleAmount);
73 assert(ShuffleStart + ShuffleAmount <= Size);
76 return Size;
79 size_t MutationDispatcher::Mutate_EraseByte(uint8_t *Data, size_t Size,
81 assert(Size);
82 if (Size == 1) return 0;
83 size_t Idx = Rand(Size);
85 memmove(Data + Idx, Data + Idx + 1, Size - Idx - 1);
86 return Size - 1;
89 size_t MutationDispatcher::Mutate_InsertByte(uint8_t *Data, size_t Size,
91 if (Size == MaxSize) return 0;
92 size_t Idx = Rand(Size + 1);
94 memmove(Data + Idx + 1, Data + Idx, Size - Idx);
96 return Size + 1;
99 size_t MutationDispatcher::Mutate_ChangeByte(uint8_t *Data, size_t Size,
101 size_t Idx = Rand(Size);
103 return Size;
106 size_t MutationDispatcher::Mutate_ChangeBit(uint8_t *Data, size_t Size,
108 size_t Idx = Rand(Size);
110 return Size;
114 size_t Size,
119 const Unit &Word = D[Rand(D.size())];
120 if (Size + Word.size() > MaxSize) return 0;
121 size_t Idx = Rand(Size + 1);
122 memmove(Data + Idx + Word.size(), Data + Idx, Size - Idx);
123 memcpy(Data + Idx, Word.data(), Word.size());
124 return Size + Word.size();
127 size_t MutationDispatcher::Mutate_ChangeASCIIInteger(uint8_t *Data, size_t Size,
129 size_t B = Rand(Size);
130 while (B < Size && !isdigit(Data[B])) B++;
131 if (B == Size) return 0;
133 while (E < Size && isdigit(Data[E])) E++;
157 return Size;
160 size_t MutationDispatcher::Mutate_CrossOver(uint8_t *Data, size_t Size,
163 if (!Corpus || Corpus->size() < 2 || Size == 0) return 0;
164 size_t Idx = Rand(Corpus->size());
169 CrossOver(Data, Size, Other.data(), Other.size(), U.data(), U.size());
181 Printf("MS: %zd ", MDImpl->CurrentMutatorSequence.size());
186 // Mutates Data in place, returns new size.
187 size_t MutationDispatcher::Mutate(uint8_t *Data, size_t Size, size_t MaxSize) {
189 assert(Size <= MaxSize);
190 if (Size == 0) {
195 assert(Size > 0);
196 // Some mutations may fail (e.g. can't insert more bytes if Size == MaxSize),
200 size_t MutatorIdx = Rand(MDImpl->Mutators.size());
202 size_t NewSize = (this->*(M.Fn))(Data, Size, MaxSize);
208 return Size;
215 void MutationDispatcher::AddWordToDictionary(const uint8_t *Word, size_t Size) {
216 MDImpl->AddWordToDictionary(Word, Size);