Trait libafl::mutators::Mutator

source ·
pub trait Mutator<I, S>: Named {
    // Required method
    fn mutate(
        &mut self,
        state: &mut S,
        input: &mut I
    ) -> Result<MutationResult, Error>;

    // Provided method
    fn post_exec(
        &mut self,
        _state: &mut S,
        _new_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 ) -> Result<MutationResult, Error>

Mutate a given input

Provided Methods§

source

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

Post-process given the outcome of the execution new_corpus_idx will be Some if a new Testcase was created this execution.

Implementors§

source§

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

source§

impl<I, M, S> Mutator<MultipartInput<I>, S> for M

source§

impl<I, MT, S> Mutator<I, S> for StdMOptMutator<I, MT, S>

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<MultipartInput<I>, S> for CrossoverInsertMutator<I>

source§

impl<I, S> Mutator<MultipartInput<I>, S> for CrossoverReplaceMutator<I>

source§

impl<I, S> Mutator<I, S> for BitFlipMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteAddMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteDecMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteFlipMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteIncMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteInterestingMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteNegMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for ByteRandMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesCopyMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesDeleteMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesExpandMutator

source§

impl<I, S> Mutator<I, S> for BytesInsertCopyMutator

source§

impl<I, S> Mutator<I, S> for BytesInsertMutator

source§

impl<I, S> Mutator<I, S> for BytesRandInsertMutator

source§

impl<I, S> Mutator<I, S> for BytesRandSetMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesSetMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for BytesSwapMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for CrossoverInsertMutator<I>
where S: HasCorpus<Input = I> + HasRand + HasMaxSize, I: Input + HasBytesVec,

source§

impl<I, S> Mutator<I, S> for CrossoverReplaceMutator<I>
where S: HasCorpus<Input = I> + HasRand, I: Input + HasBytesVec,

source§

impl<I, S> Mutator<I, S> for DwordAddMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for DwordInterestingMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for QwordAddMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for WordAddMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for WordInterestingMutator
where S: HasRand, I: HasBytesVec,

source§

impl<I, S> Mutator<I, S> for I2SRandReplace

source§

impl<I, S> Mutator<I, S> for TokenInsert

source§

impl<I, S> Mutator<I, S> for TokenReplace

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for EncodedCrossoverInsertMutator

source§

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

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for GramatronSpliceMutator

source§

impl<S> Mutator<<S as UsesInput>::Input, S> for SpliceMutator

source§

impl<S> Mutator<(BytesInput, StringIdentificationMetadata), S> for StringCategoryRandMutator
where S: HasRand + HasMaxSize,

source§

impl<S> Mutator<(BytesInput, StringIdentificationMetadata), S> for StringCategoryTokenReplaceMutator

source§

impl<S> Mutator<(BytesInput, StringIdentificationMetadata), S> for StringSubcategoryRandMutator
where S: HasRand + HasMaxSize,

source§

impl<S> Mutator<(BytesInput, StringIdentificationMetadata), S> for StringSubcategoryTokenReplaceMutator

source§

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

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireExtensionMutator

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireRandomDeleteMutator

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireRecursiveReplacementMutator

source§

impl<S> Mutator<GeneralizedInputMetadata, S> for GrimoireStringReplacementMutator

source§

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

source§

impl<S> Mutator<NautilusInput, S> for NautilusRandomMutator<'_>

source§

impl<S> Mutator<NautilusInput, S> for NautilusRecursionMutator<'_>

source§

impl<S> Mutator<NautilusInput, S> for NautilusSpliceMutator<'_>
where S: HasCorpus<Input = NautilusInput> + 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