Lines Matching full:size

24   PrintASCII(W.data(), W.size(), PrintAfter);  in PrintASCII()
70 size_t MutationDispatcher::Mutate_Custom(uint8_t *Data, size_t Size, in Mutate_Custom() argument
73 EF->__msan_unpoison(Data, Size); in Mutate_Custom()
76 return EF->LLVMFuzzerCustomMutator(Data, Size, MaxSize, in Mutate_Custom()
80 size_t MutationDispatcher::Mutate_CustomCrossOver(uint8_t *Data, size_t Size, in Mutate_CustomCrossOver() argument
82 if (Size == 0) in Mutate_CustomCrossOver()
92 EF->__msan_unpoison(Data, Size); in Mutate_CustomCrossOver()
93 EF->__msan_unpoison(Other.data(), Other.size()); in Mutate_CustomCrossOver()
94 EF->__msan_unpoison(U.data(), U.size()); in Mutate_CustomCrossOver()
99 Data, Size, Other.data(), Other.size(), U.data(), U.size(), in Mutate_CustomCrossOver()
109 size_t MutationDispatcher::Mutate_ShuffleBytes(uint8_t *Data, size_t Size, in Mutate_ShuffleBytes() argument
111 if (Size > MaxSize || Size == 0) return 0; in Mutate_ShuffleBytes()
113 Rand(std::min(Size, (size_t)8)) + 1; // [1,8] and <= Size. in Mutate_ShuffleBytes()
114 size_t ShuffleStart = Rand(Size - ShuffleAmount); in Mutate_ShuffleBytes()
115 assert(ShuffleStart + ShuffleAmount <= Size); in Mutate_ShuffleBytes()
117 return Size; in Mutate_ShuffleBytes()
120 size_t MutationDispatcher::Mutate_EraseBytes(uint8_t *Data, size_t Size, in Mutate_EraseBytes() argument
122 if (Size <= 1) return 0; in Mutate_EraseBytes()
123 size_t N = Rand(Size / 2) + 1; in Mutate_EraseBytes()
124 assert(N < Size); in Mutate_EraseBytes()
125 size_t Idx = Rand(Size - N + 1); in Mutate_EraseBytes()
127 memmove(Data + Idx, Data + Idx + N, Size - Idx - N); in Mutate_EraseBytes()
128 // Printf("Erase: %zd %zd => %zd; Idx %zd\n", N, Size, Size - N, Idx); in Mutate_EraseBytes()
129 return Size - N; in Mutate_EraseBytes()
132 size_t MutationDispatcher::Mutate_InsertByte(uint8_t *Data, size_t Size, in Mutate_InsertByte() argument
134 if (Size >= MaxSize) return 0; in Mutate_InsertByte()
135 size_t Idx = Rand(Size + 1); in Mutate_InsertByte()
137 memmove(Data + Idx + 1, Data + Idx, Size - Idx); in Mutate_InsertByte()
139 return Size + 1; in Mutate_InsertByte()
143 size_t Size, in Mutate_InsertRepeatedBytes() argument
146 if (Size + kMinBytesToInsert >= MaxSize) return 0; in Mutate_InsertRepeatedBytes()
147 size_t MaxBytesToInsert = std::min(MaxSize - Size, (size_t)128); in Mutate_InsertRepeatedBytes()
149 assert(Size + N <= MaxSize && N); in Mutate_InsertRepeatedBytes()
150 size_t Idx = Rand(Size + 1); in Mutate_InsertRepeatedBytes()
152 memmove(Data + Idx + N, Data + Idx, Size - Idx); in Mutate_InsertRepeatedBytes()
158 return Size + N; in Mutate_InsertRepeatedBytes()
161 size_t MutationDispatcher::Mutate_ChangeByte(uint8_t *Data, size_t Size, in Mutate_ChangeByte() argument
163 if (Size > MaxSize) return 0; in Mutate_ChangeByte()
164 size_t Idx = Rand(Size); in Mutate_ChangeByte()
166 return Size; in Mutate_ChangeByte()
169 size_t MutationDispatcher::Mutate_ChangeBit(uint8_t *Data, size_t Size, in Mutate_ChangeBit() argument
171 if (Size > MaxSize) return 0; in Mutate_ChangeBit()
172 size_t Idx = Rand(Size); in Mutate_ChangeBit()
174 return Size; in Mutate_ChangeBit()
178 size_t Size, in Mutate_AddWordFromManualDictionary() argument
180 return AddWordFromDictionary(ManualDictionary, Data, Size, MaxSize); in Mutate_AddWordFromManualDictionary()
183 size_t MutationDispatcher::ApplyDictionaryEntry(uint8_t *Data, size_t Size, in ApplyDictionaryEntry() argument
188 DE.GetPositionHint() + W.size() < Size && in ApplyDictionaryEntry()
191 if (Size + W.size() > MaxSize) return 0; in ApplyDictionaryEntry()
192 size_t Idx = UsePositionHint ? DE.GetPositionHint() : Rand(Size + 1); in ApplyDictionaryEntry()
193 memmove(Data + Idx + W.size(), Data + Idx, Size - Idx); in ApplyDictionaryEntry()
194 memcpy(Data + Idx, W.data(), W.size()); in ApplyDictionaryEntry()
195 Size += W.size(); in ApplyDictionaryEntry()
197 if (W.size() > Size) return 0; in ApplyDictionaryEntry()
199 UsePositionHint ? DE.GetPositionHint() : Rand(Size + 1 - W.size()); in ApplyDictionaryEntry()
200 memcpy(Data + Idx, W.data(), W.size()); in ApplyDictionaryEntry()
202 return Size; in ApplyDictionaryEntry()
215 size_t Size) { in MakeDictionaryEntryFromCMP() argument
219 const uint8_t *End = Data + Size; in MakeDictionaryEntryFromCMP()
245 T Arg1, T Arg2, const uint8_t *Data, size_t Size) { in MakeDictionaryEntryFromCMP() argument
251 sizeof(Arg1), Data, Size); in MakeDictionaryEntryFromCMP()
255 const Word &Arg1, const Word &Arg2, const uint8_t *Data, size_t Size) { in MakeDictionaryEntryFromCMP() argument
257 Arg2.data(), Arg1.size(), Data, Size); in MakeDictionaryEntryFromCMP()
261 uint8_t *Data, size_t Size, size_t MaxSize) { in Mutate_AddWordFromTORC() argument
267 DE = MakeDictionaryEntryFromCMP(X.A, X.B, Data, Size); in Mutate_AddWordFromTORC()
272 DE = MakeDictionaryEntryFromCMP((uint16_t)X.A, (uint16_t)X.B, Data, Size); in Mutate_AddWordFromTORC()
274 DE = MakeDictionaryEntryFromCMP(X.A, X.B, Data, Size); in Mutate_AddWordFromTORC()
278 DE = MakeDictionaryEntryFromCMP(X.A, X.B, Data, Size); in Mutate_AddWordFromTORC()
287 if (!DE.GetW().size()) return 0; in Mutate_AddWordFromTORC()
288 Size = ApplyDictionaryEntry(Data, Size, MaxSize, DE); in Mutate_AddWordFromTORC()
289 if (!Size) return 0; in Mutate_AddWordFromTORC()
295 return Size; in Mutate_AddWordFromTORC()
299 uint8_t *Data, size_t Size, size_t MaxSize) { in Mutate_AddWordFromPersistentAutoDictionary() argument
300 return AddWordFromDictionary(PersistentAutoDictionary, Data, Size, MaxSize); in Mutate_AddWordFromPersistentAutoDictionary()
304 size_t Size, size_t MaxSize) { in AddWordFromDictionary() argument
305 if (Size > MaxSize) return 0; in AddWordFromDictionary()
307 DictionaryEntry &DE = D[Rand(D.size())]; in AddWordFromDictionary()
308 Size = ApplyDictionaryEntry(Data, Size, MaxSize, DE); in AddWordFromDictionary()
309 if (!Size) return 0; in AddWordFromDictionary()
312 return Size; in AddWordFromDictionary()
331 // Returns new size of To on success or 0 on failure.
356 size_t MutationDispatcher::Mutate_CopyPart(uint8_t *Data, size_t Size, in Mutate_CopyPart() argument
358 if (Size > MaxSize || Size == 0) return 0; in Mutate_CopyPart()
359 // If Size == MaxSize, `InsertPartOf(...)` will in Mutate_CopyPart()
361 if (Size == MaxSize || Rand.RandBool()) in Mutate_CopyPart()
362 return CopyPartOf(Data, Size, Data, Size); in Mutate_CopyPart()
364 return InsertPartOf(Data, Size, Data, Size, MaxSize); in Mutate_CopyPart()
367 size_t MutationDispatcher::Mutate_ChangeASCIIInteger(uint8_t *Data, size_t Size, in Mutate_ChangeASCIIInteger() argument
369 if (Size > MaxSize) return 0; in Mutate_ChangeASCIIInteger()
370 size_t B = Rand(Size); in Mutate_ChangeASCIIInteger()
371 while (B < Size && !isdigit(Data[B])) B++; in Mutate_ChangeASCIIInteger()
372 if (B == Size) return 0; in Mutate_ChangeASCIIInteger()
374 while (E < Size && isdigit(Data[E])) E++; in Mutate_ChangeASCIIInteger()
398 return Size; in Mutate_ChangeASCIIInteger()
402 size_t ChangeBinaryInteger(uint8_t *Data, size_t Size, Random &Rand) { in ChangeBinaryInteger() argument
403 if (Size < sizeof(T)) return 0; in ChangeBinaryInteger()
404 size_t Off = Rand(Size - sizeof(T) + 1); in ChangeBinaryInteger()
405 assert(Off + sizeof(T) <= Size); in ChangeBinaryInteger()
408 Val = static_cast<T>(Size); in ChangeBinaryInteger()
423 return Size; in ChangeBinaryInteger()
427 size_t Size, in Mutate_ChangeBinaryInteger() argument
429 if (Size > MaxSize) return 0; in Mutate_ChangeBinaryInteger()
431 case 3: return ChangeBinaryInteger<uint64_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
432 case 2: return ChangeBinaryInteger<uint32_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
433 case 1: return ChangeBinaryInteger<uint16_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
434 case 0: return ChangeBinaryInteger<uint8_t>(Data, Size, Rand); in Mutate_ChangeBinaryInteger()
440 size_t MutationDispatcher::Mutate_CrossOver(uint8_t *Data, size_t Size, in Mutate_CrossOver() argument
442 if (Size > MaxSize) return 0; in Mutate_CrossOver()
443 if (Size == 0) return 0; in Mutate_CrossOver()
451 NewSize = CrossOver(Data, Size, O.data(), O.size(), in Mutate_CrossOver()
456 NewSize = InsertPartOf(O.data(), O.size(), Data, Size, MaxSize); in Mutate_CrossOver()
458 NewSize = CopyPartOf(O.data(), O.size(), Data, Size); in Mutate_CrossOver()
461 NewSize = CopyPartOf(O.data(), O.size(), Data, Size); in Mutate_CrossOver()
480 assert(DE->GetW().size()); in RecordSuccessfulMutationSequence()
495 assert(DE.GetW().size()); in PrintRecommendedDictionary()
504 Printf("MS: %zd ", CurrentMutatorSequence.size()); in PrintMutationSequence()
506 Verbose ? CurrentMutatorSequence.size() in PrintMutationSequence()
507 : std::min(kMaxMutationsToPrint, CurrentMutatorSequence.size()); in PrintMutationSequence()
512 EntriesToPrint = Verbose ? CurrentDictionaryEntrySequence.size() in PrintMutationSequence()
514 CurrentDictionaryEntrySequence.size()); in PrintMutationSequence()
531 size_t MutationDispatcher::Mutate(uint8_t *Data, size_t Size, size_t MaxSize) { in Mutate() argument
532 return MutateImpl(Data, Size, MaxSize, Mutators); in Mutate()
535 size_t MutationDispatcher::DefaultMutate(uint8_t *Data, size_t Size, in DefaultMutate() argument
537 return MutateImpl(Data, Size, MaxSize, DefaultMutators); in DefaultMutate()
540 // Mutates Data in place, returns new size.
541 size_t MutationDispatcher::MutateImpl(uint8_t *Data, size_t Size, in MutateImpl() argument
545 // Some mutations may fail (e.g. can't insert more bytes if Size == MaxSize), in MutateImpl()
549 auto M = Mutators[Rand(Mutators.size())]; in MutateImpl()
550 size_t NewSize = (this->*(M.Fn))(Data, Size, MaxSize); in MutateImpl()
563 size_t MutationDispatcher::MutateWithMask(uint8_t *Data, size_t Size, in MutateWithMask() argument
566 size_t MaskedSize = std::min(Size, Mask.size()); in MutateWithMask()
572 if (T.size() < Size) in MutateWithMask()
573 T.resize(Size); in MutateWithMask()
588 return Size; in MutateWithMask()