Add AFLStats to QEMU_Launcher TUI (#2611)
* Remove prelude from qemu_launcher * QEMU_Launcher: Add stats to TUI * More tui
This commit is contained in:
parent
1ad64e7ae7
commit
da8f17f29e
@ -34,7 +34,7 @@ pub struct Client<'a> {
|
||||
options: &'a FuzzerOptions,
|
||||
}
|
||||
|
||||
impl<'a> Client<'a> {
|
||||
impl Client<'_> {
|
||||
pub fn new(options: &FuzzerOptions) -> Client {
|
||||
Client { options }
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
use core::{fmt::Debug, ptr::addr_of_mut};
|
||||
use std::{fs, marker::PhantomData, ops::Range, process};
|
||||
use std::{fs, marker::PhantomData, ops::Range, process, time::Duration};
|
||||
|
||||
#[cfg(feature = "simplemgr")]
|
||||
use libafl::events::SimpleEventManager;
|
||||
@ -23,8 +23,8 @@ use libafl::{
|
||||
powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, PowerQueueScheduler,
|
||||
},
|
||||
stages::{
|
||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, ShadowTracingStage,
|
||||
StagesTuple, StdMutationalStage,
|
||||
calibrate::CalibrationStage, power::StdPowerMutationalStage, AflStatsStage, IfStage,
|
||||
ShadowTracingStage, StagesTuple, StdMutationalStage,
|
||||
},
|
||||
state::{HasCorpus, StdState, UsesState},
|
||||
Error, HasMetadata, NopFuzzer,
|
||||
@ -73,7 +73,7 @@ pub struct Instance<'a, M: Monitor> {
|
||||
phantom: PhantomData<M>,
|
||||
}
|
||||
|
||||
impl<'a, M: Monitor> Instance<'a, M> {
|
||||
impl<M: Monitor> Instance<'_, M> {
|
||||
#[allow(clippy::similar_names)] // elf != self
|
||||
fn coverage_filter(&self, qemu: Qemu) -> Result<StdAddressFilter, Error> {
|
||||
/* Conversion is required on 32-bit targets, but not on 64-bit ones */
|
||||
@ -107,6 +107,7 @@ impl<'a, M: Monitor> Instance<'a, M> {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(clippy::too_many_lines)]
|
||||
pub fn run<ET>(&mut self, modules: ET, state: Option<ClientState>) -> Result<(), Error>
|
||||
where
|
||||
ET: EmulatorModuleTuple<ClientState> + Debug,
|
||||
@ -135,6 +136,11 @@ impl<'a, M: Monitor> Instance<'a, M> {
|
||||
|
||||
let calibration = CalibrationStage::new(&map_feedback);
|
||||
|
||||
let stats_stage = IfStage::new(
|
||||
|_, _, _, _| Ok(self.options.tui),
|
||||
tuple_list!(AflStatsStage::new(Duration::from_secs(5))),
|
||||
);
|
||||
|
||||
// Feedback to rate the interestingness of an input
|
||||
// This one is composed by two Feedbacks in OR
|
||||
let mut feedback = feedback_or!(
|
||||
@ -268,7 +274,7 @@ impl<'a, M: Monitor> Instance<'a, M> {
|
||||
StdPowerMutationalStage::new(mutator);
|
||||
|
||||
// The order of the stages matter!
|
||||
let mut stages = tuple_list!(calibration, tracing, i2s, power);
|
||||
let mut stages = tuple_list!(calibration, tracing, i2s, power, stats_stage);
|
||||
|
||||
self.fuzz(&mut state, &mut fuzzer, &mut executor, &mut stages)
|
||||
} else {
|
||||
|
@ -199,7 +199,7 @@ impl FuzzerOptions {
|
||||
let mut cmd = FuzzerOptions::command();
|
||||
cmd.error(
|
||||
ErrorKind::ValueValidation,
|
||||
format!("The `drcov` option is only supported with `rerun_input`."),
|
||||
"The `drcov` option is only supported with `rerun_input`.".to_string(),
|
||||
)
|
||||
.exit();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user