libafl_qemu::executor

Struct QemuForkExecutor

Source
pub struct QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> { /* private fields */ }

Implementations§

Source§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>
where EM: EventFirer<I, S> + EventRestarter<S>, ET: EmulatorModuleTuple<I, S>, OT: ObserversTuple<I, S>, S: HasSolutions<I>, SP: ShMemProvider, Z: HasObjective, Z::Objective: Feedback<EM, I, OT, S>,

Source

pub fn new( emulator: Emulator<C, CM, ED, ET, I, S, SM>, harness_fn: &'a mut H, observers: OT, fuzzer: &mut Z, state: &mut S, event_mgr: &mut EM, shmem_provider: SP, timeout: Duration, ) -> Result<Self, Error>

Source

pub fn inner( &self, ) -> &QemuInProcessForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

Source

pub fn inner_mut( &mut self, ) -> &mut QemuInProcessForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

Source

pub fn emulator(&self) -> &Emulator<C, CM, ED, ET, I, S, SM>

Source

pub fn emulator_mut(&mut self) -> &Emulator<C, CM, ED, ET, I, S, SM>

Trait Implementations§

Source§

impl<C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> Debug for QemuForkExecutor<'_, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>
where C: Debug, CM: Debug, ED: Debug, EM: Debug, ET: EmulatorModuleTuple<I, S> + Debug, OT: ObserversTuple<I, S> + Debug, I: Debug, S: Debug, SM: Debug, SP: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<C, CM, ED, EM, ET, H, I, OF, OT, S, SM, SP, Z> Executor<EM, I, S, Z> for QemuForkExecutor<'_, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>
where C: Clone, CM: CommandManager<C, ED, ET, I, S, SM, Commands = C>, ED: EmulatorDriver<C, CM, ET, I, S, SM>, EM: EventFirer<I, S> + EventRestarter<S>, ET: EmulatorModuleTuple<I, S>, H: FnMut(&mut Emulator<C, CM, ED, ET, I, S, SM>, &I) -> ExitKind, OF: Feedback<EM, I, OT, S>, OT: ObserversTuple<I, S> + Debug, I: Input + Unpin, S: HasExecutions + Unpin, SP: ShMemProvider, Z: HasObjective<Objective = OF>,

Source§

fn run_target( &mut self, fuzzer: &mut Z, state: &mut S, mgr: &mut EM, input: &I, ) -> Result<ExitKind, Error>

Instruct the target about the input and run
Source§

impl<C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> HasObservers for QemuForkExecutor<'_, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>
where ET: EmulatorModuleTuple<I, S>, OT: ObserversTuple<I, S>,

Source§

type Observers = OT

The observer
Source§

fn observers(&self) -> RefIndexable<&Self::Observers, Self::Observers>

Get the linked observers
Source§

fn observers_mut( &mut self, ) -> RefIndexable<&mut Self::Observers, Self::Observers>

Get the linked observers (mutable)

Auto Trait Implementations§

§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> !Freeze for QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> !RefUnwindSafe for QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> !Send for QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> !Sync for QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> Unpin for QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>
where SM: Unpin, CM: Unpin, ED: Unpin, SP: Unpin, OT: Unpin, EM: Unpin, I: Unpin, S: Unpin, Z: Unpin, C: Unpin,

§

impl<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z> !UnwindSafe for QemuForkExecutor<'a, C, CM, ED, EM, ET, H, I, OT, S, SM, SP, Z>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<Head, T> Append<T> for Head

Source§

fn append(self, value: T) -> (Head, T)

Append Value and return the tuple
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Tail, T> Prepend<T> for Tail

Source§

fn prepend(self, value: T) -> (T, Tail)

Prepend a value to this tuple, returning a new tuple with prepended value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> MaybeHasClientPerfMonitor for T