Struct libafl::fuzzer::StdFuzzer [−][src]
pub struct StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats, { /* fields omitted */ }
Expand description
Your default fuzzer instance, for everyday use.
Implementations
impl<C, CS, F, I, OF, OT, S, SC> StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasExecutions + HasClientPerfStats,
impl<C, CS, F, I, OF, OT, S, SC> StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasExecutions + HasClientPerfStats,
Create a new StdFuzzer
with standard behavior.
pub fn execute_input<E, EM>(
&mut self,
state: &mut S,
executor: &mut E,
event_mgr: &mut EM,
input: &I
) -> Result<ExitKind, Error> where
E: Executor<EM, I, S, Self> + HasObservers<I, OT, S>,
OT: ObserversTuple<I, S>,
pub fn execute_input<E, EM>(
&mut self,
state: &mut S,
executor: &mut E,
event_mgr: &mut EM,
input: &I
) -> Result<ExitKind, Error> where
E: Executor<EM, I, S, Self> + HasObservers<I, OT, S>,
OT: ObserversTuple<I, S>,
Runs the input and triggers observers and feedback
Trait Implementations
impl<C, CS, E, EM, F, I, OF, OT, S, SC> Evaluator<E, EM, I, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Corpus<I>,
CS: CorpusScheduler<I, S>,
E: Executor<EM, I, S, Self> + HasObservers<I, OT, S>,
OT: ObserversTuple<I, S> + Serialize + DeserializeOwned,
EM: EventManager<E, I, S, Self>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasExecutions + HasCorpus<C, I> + HasSolutions<SC, I> + HasClientPerfStats,
SC: Corpus<I>,
impl<C, CS, E, EM, F, I, OF, OT, S, SC> Evaluator<E, EM, I, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Corpus<I>,
CS: CorpusScheduler<I, S>,
E: Executor<EM, I, S, Self> + HasObservers<I, OT, S>,
OT: ObserversTuple<I, S> + Serialize + DeserializeOwned,
EM: EventManager<E, I, S, Self>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasExecutions + HasCorpus<C, I> + HasSolutions<SC, I> + HasClientPerfStats,
SC: Corpus<I>,
Process one input, adding to the respective corpuses if needed and firing the right events
Adds an input, even if it’s not conisered interesting
by any of the executors
impl<C, CS, F, I, OF, OT, S, SC> EvaluatorObservers<I, OT, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Corpus<I>,
CS: CorpusScheduler<I, S>,
OT: ObserversTuple<I, S> + Serialize + DeserializeOwned,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasExecutions + HasCorpus<C, I> + HasSolutions<SC, I> + HasClientPerfStats,
SC: Corpus<I>,
impl<C, CS, F, I, OF, OT, S, SC> EvaluatorObservers<I, OT, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Corpus<I>,
CS: CorpusScheduler<I, S>,
OT: ObserversTuple<I, S> + Serialize + DeserializeOwned,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasExecutions + HasCorpus<C, I> + HasSolutions<SC, I> + HasClientPerfStats,
SC: Corpus<I>,
fn evaluate_input_with_observers<E, EM>(
&mut self,
state: &mut S,
executor: &mut E,
manager: &mut EM,
input: I,
send_events: bool
) -> Result<(ExecuteInputResult, Option<usize>), Error> where
E: Executor<EM, I, S, Self> + HasObservers<I, OT, S>,
EM: EventManager<E, I, S, Self>,
fn evaluate_input_with_observers<E, EM>(
&mut self,
state: &mut S,
executor: &mut E,
manager: &mut EM,
input: I,
send_events: bool
) -> Result<(ExecuteInputResult, Option<usize>), Error> where
E: Executor<EM, I, S, Self> + HasObservers<I, OT, S>,
EM: EventManager<E, I, S, Self>,
Process one input, adding to the respective corpuses if needed and firing the right events
impl<C, CS, F, I, OF, OT, S, SC> ExecutionProcessor<I, OT, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Corpus<I>,
SC: Corpus<I>,
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
OT: ObserversTuple<I, S> + Serialize + DeserializeOwned,
S: HasCorpus<C, I> + HasSolutions<SC, I> + HasClientPerfStats + HasExecutions,
impl<C, CS, F, I, OF, OT, S, SC> ExecutionProcessor<I, OT, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Corpus<I>,
SC: Corpus<I>,
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
OT: ObserversTuple<I, S> + Serialize + DeserializeOwned,
S: HasCorpus<C, I> + HasSolutions<SC, I> + HasClientPerfStats + HasExecutions,
fn process_execution<EM>(
&mut self,
state: &mut S,
manager: &mut EM,
input: I,
observers: &OT,
exit_kind: &ExitKind,
send_events: bool
) -> Result<(ExecuteInputResult, Option<usize>), Error> where
EM: EventFirer<I, S>,
fn process_execution<EM>(
&mut self,
state: &mut S,
manager: &mut EM,
input: I,
observers: &OT,
exit_kind: &ExitKind,
send_events: bool
) -> Result<(ExecuteInputResult, Option<usize>), Error> where
EM: EventFirer<I, S>,
Evaluate if a set of observation channels has an interesting state
impl<C, CS, E, EM, F, I, OF, OT, S, ST, SC> Fuzzer<E, EM, I, S, ST> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
EM: EventManager<E, I, S, Self>,
F: Feedback<I, S>,
I: Input,
S: HasExecutions + HasClientPerfStats,
OF: Feedback<I, S>,
ST: StagesTuple<E, EM, S, Self>,
impl<C, CS, E, EM, F, I, OF, OT, S, ST, SC> Fuzzer<E, EM, I, S, ST> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
EM: EventManager<E, I, S, Self>,
F: Feedback<I, S>,
I: Input,
S: HasExecutions + HasClientPerfStats,
OF: Feedback<I, S>,
ST: StagesTuple<E, EM, S, Self>,
Given the last time, if stats_timeout
seconds passed, send off an info/stats/heartbeat message to the broker.
Returns the new last
time (so the old one, unless stats_timeout
time has passed and stats have been sent)
Will return an crate::Error
, if the stats could not be sent. Read more
Fuzz for a single iteration Returns the index of the last fuzzed corpus item Read more
Fuzz forever (or until stopped)
impl<C, CS, F, I, OF, OT, S, SC> HasCorpusScheduler<CS, I, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats,
impl<C, CS, F, I, OF, OT, S, SC> HasCorpusScheduler<CS, I, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats,
impl<C, CS, F, I, OF, OT, S, SC> HasFeedback<F, I, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats,
impl<C, CS, F, I, OF, OT, S, SC> HasFeedback<F, I, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats,
impl<C, CS, F, I, OF, OT, S, SC> HasObjective<I, OF, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats,
impl<C, CS, F, I, OF, OT, S, SC> HasObjective<I, OF, S> for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
CS: CorpusScheduler<I, S>,
F: Feedback<I, S>,
I: Input,
OF: Feedback<I, S>,
S: HasClientPerfStats,
Auto Trait Implementations
impl<C, CS, F, I, OF, OT, S, SC> RefUnwindSafe for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: RefUnwindSafe,
CS: RefUnwindSafe,
F: RefUnwindSafe,
I: RefUnwindSafe,
OF: RefUnwindSafe,
OT: RefUnwindSafe,
S: RefUnwindSafe,
SC: RefUnwindSafe,
impl<C, CS, F, I, OF, OT, S, SC> Send for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Send,
CS: Send,
F: Send,
I: Send,
OF: Send,
OT: Send,
S: Send,
SC: Send,
impl<C, CS, F, I, OF, OT, S, SC> Sync for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Sync,
CS: Sync,
F: Sync,
I: Sync,
OF: Sync,
OT: Sync,
S: Sync,
SC: Sync,
impl<C, CS, F, I, OF, OT, S, SC> Unpin for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: Unpin,
CS: Unpin,
F: Unpin,
I: Unpin,
OF: Unpin,
OT: Unpin,
S: Unpin,
SC: Unpin,
impl<C, CS, F, I, OF, OT, S, SC> UnwindSafe for StdFuzzer<C, CS, F, I, OF, OT, S, SC> where
C: UnwindSafe,
CS: UnwindSafe,
F: UnwindSafe,
I: UnwindSafe,
OF: UnwindSafe,
OT: UnwindSafe,
S: UnwindSafe,
SC: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more
type PreprendResult = Tail
type PreprendResult = Tail
The Resulting TupleList
, of an Prepend::prepend()
call,
including the prepended entry. Read more
type Output = T
type Output = T
Should always be Self