Trait libafl::mutators::Mutator

source ·
pub trait Mutator<I, S> {
    fn mutate(
        &mut self,
        state: &mut S,
        input: &mut I,
        stage_idx: i32
    ) -> Result<MutationResult, Error>; fn post_exec(
        &mut self,
        _state: &mut S,
        _stage_idx: i32,
        _corpus_idx: Option<CorpusId>
    ) -> Result<(), Error> { ... } }
Expand description

A mutator takes input, and mutates it. Simple as that.

Required Methods§

source

fn mutate(
    &mut self,
    state: &mut S,
    input: &mut I,
    stage_idx: i32
) -> Result<MutationResult, Error>

Mutate a given input

Provided Methods§

source

fn post_exec(
    &mut self,
    _state: &mut S,
    _stage_idx: i32,
    _corpus_idx: Option<CorpusId>
) -> Result<(), Error>

Post-process given the outcome of the execution

Implementors§

source§

impl<'a, S> Mutator<GramatronInput, S> for GramatronRandomMutator<'a, S>where
    S: HasRand + HasMetadata,

source§

impl<I, MT, S> Mutator<I, S> for StdMOptMutator<I, MT, S>where
    MT: MutatorsTuple<I, S>,
    S: HasRand + HasMetadata + HasCorpus + HasSolutions,

source§

impl<I, MT, S> Mutator<I, S> for StdScheduledMutator<I, MT, S>where
    MT: MutatorsTuple<I, S>,
    S: HasRand,

source§

impl<I, MT, S> Mutator<I, S> for TuneableScheduledMutator<I, MT, S>where
    MT: MutatorsTuple<I, S>,
    S: HasRand + HasMetadata,

source§

impl<I, MT, S, SM> Mutator<I, S> for LoggerScheduledMutator<I, MT, S, SM>where
    MT: MutatorsTuple<I, S> + NamedTuple,
    S: HasRand + HasCorpus,
    SM: ScheduledMutator<I, MT, S>,

source§

impl<I, S> Mutator<I, S> for BitFlipMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteAddMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteDecMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteFlipMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteIncMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteInterestingMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteNegMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteRandMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesCopyMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesDeleteMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesExpandMutatorwhere
    S: HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesInsertCopyMutatorwhere
    S: HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesInsertMutatorwhere
    S: HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesRandInsertMutatorwhere
    S: HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesRandSetMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesSetMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesSwapMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for DwordAddMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for DwordInterestingMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for QwordAddMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for WordAddMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for WordInterestingMutatorwhere
    S: HasRand,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for I2SRandReplacewhere
    S: UsesInput + HasMetadata + HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for TokenInsertwhere
    S: HasMetadata + HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for TokenReplacewhere
    S: UsesInput + HasMetadata + HasRand + HasMaxSize,
    I: HasBytesVec,

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for EncodedCrossoverInsertMutatorwhere
    S: UsesInput<Input = EncodedInput> + HasRand + HasCorpus + HasMaxSize,

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for EncodedCrossoverReplaceMutatorwhere
    S: UsesInput<Input = EncodedInput> + HasRand + HasCorpus,

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for GramatronSpliceMutatorwhere
    S: HasRand + HasCorpus<Input = GramatronInput> + HasMetadata,

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for CrossoverInsertMutatorwhere
    S: HasCorpus + HasRand + HasMaxSize,
    S::Input: HasBytesVec,

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for CrossoverReplaceMutatorwhere
    S: HasCorpus + HasRand,
    S::Input: HasBytesVec,

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for SpliceMutatorwhere
    S: HasCorpus + HasRand,
    S::Input: HasBytesVec,

source§

impl<S> Mutator<EncodedInput, S> for EncodedInsertCopyMutatorwhere
    S: HasRand + HasMaxSize,

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireExtensionMutatorwhere
    S: HasMetadata + HasRand + HasCorpus,

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireRandomDeleteMutatorwhere
    S: HasMetadata + HasRand + HasCorpus,

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireRecursiveReplacementMutatorwhere
    S: HasMetadata + HasRand + HasCorpus,

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireStringReplacementMutatorwhere
    S: HasMetadata + HasRand + HasCorpus,

source§

impl<S> Mutator<GramatronInput, S> for GramatronRecursionMutatorwhere
    S: HasRand + HasMetadata,

source§

impl<S: HasRand> Mutator<EncodedInput, S> for EncodedAddMutator

source§

impl<S: HasRand> Mutator<EncodedInput, S> for EncodedCopyMutator

source§

impl<S: HasRand> Mutator<EncodedInput, S> for EncodedDecMutator

source§

impl<S: HasRand> Mutator<EncodedInput, S> for EncodedDeleteMutator

source§

impl<S: HasRand> Mutator<EncodedInput, S> for EncodedIncMutator

source§

impl<S: HasRand> Mutator<EncodedInput, S> for EncodedRandMutator