//===- FuzzerInterface.cpp - Mutate a test input --------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // Parts of public interface for libFuzzer. //===----------------------------------------------------------------------===// #include "FuzzerInterface.h" #include "FuzzerInternal.h" namespace fuzzer { void FuzzerRandomLibc::ResetSeed(unsigned int seed) { srand(seed); } size_t FuzzerRandomLibc::Rand() { return rand(); } UserSuppliedFuzzer::UserSuppliedFuzzer(FuzzerRandomBase *Rand) : Rand(Rand), MD(new MutationDispatcher(*Rand)) {} UserSuppliedFuzzer::~UserSuppliedFuzzer() { if (OwnRand) delete Rand; delete MD; } size_t UserSuppliedFuzzer::Mutate(uint8_t *Data, size_t Size, size_t MaxSize) { return GetMD().Mutate(Data, Size, MaxSize); } size_t UserSuppliedFuzzer::CrossOver(const uint8_t *Data1, size_t Size1, const uint8_t *Data2, size_t Size2, uint8_t *Out, size_t MaxOutSize) { return GetMD().CrossOver(Data1, Size1, Data2, Size2, Out, MaxOutSize); } size_t Mutate(uint8_t *Data, size_t Size, size_t MaxSize, FuzzerRandomBase &Rand) { MutationDispatcher MD(Rand); return MD.Mutate(Data, Size, MaxSize); } } // namespace fuzzer.