//===- 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(int seed) { srand(seed); } size_t FuzzerRandomLibc::Rand() { return rand(); } UserSuppliedFuzzer::UserSuppliedFuzzer() : OwnRand(true), Rand(new FuzzerRandomLibc(0)) {} UserSuppliedFuzzer::UserSuppliedFuzzer(FuzzerRandomBase *Rand) : Rand(Rand) {} UserSuppliedFuzzer::~UserSuppliedFuzzer() { if (OwnRand) delete Rand; } size_t UserSuppliedFuzzer::BasicMutate(uint8_t *Data, size_t Size, size_t MaxSize) { return ::fuzzer::Mutate(Data, Size, MaxSize, *Rand); } size_t UserSuppliedFuzzer::BasicCrossOver(const uint8_t *Data1, size_t Size1, const uint8_t *Data2, size_t Size2, uint8_t *Out, size_t MaxOutSize) { return ::fuzzer::CrossOver(Data1, Size1, Data2, Size2, Out, MaxOutSize, *Rand); } } // namespace fuzzer.