build fixes
This commit is contained in:
parent
47724ad1c3
commit
d569df29a3
@ -4,11 +4,12 @@ use core::time::Duration;
|
|||||||
use std::{env, path::PathBuf, process::{self, abort}, io::{Read, Write}, fs::{self, OpenOptions}, cmp::{min, max}, mem::transmute_copy, collections::btree_map::Range, ptr::addr_of_mut, ffi::OsStr};
|
use std::{env, path::PathBuf, process::{self, abort}, io::{Read, Write}, fs::{self, OpenOptions}, cmp::{min, max}, mem::transmute_copy, collections::btree_map::Range, ptr::addr_of_mut, ffi::OsStr};
|
||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use libafl_bolts::{
|
use libafl_bolts::{
|
||||||
core_affinity::Cores, rands::StdRand, shmem::{ShMemProvider, StdShMemProvider}, tuples::tuple_list, AsSlice
|
core_affinity::Cores, ownedref::OwnedMutSlice, rands::StdRand, shmem::{ShMemProvider, StdShMemProvider}, tuples::tuple_list, AsSlice
|
||||||
};
|
};
|
||||||
use libafl::{
|
use libafl::{
|
||||||
common::{HasMetadata, HasNamedMetadata}, corpus::{Corpus, InMemoryCorpus, OnDiskCorpus}, events::{launcher::Launcher, EventConfig}, executors::ExitKind, feedback_or, feedback_or_fast, feedbacks::{CrashFeedback, MaxMapFeedback, TimeoutFeedback}, fuzzer::{Fuzzer, StdFuzzer}, inputs::{multi::MultipartInput, BytesInput, HasTargetBytes, Input}, monitors::MultiMonitor, observers::{CanTrack, VariableMapObserver}, prelude::{havoc_mutations, minimizer::TopRatedsMetadata, CorpusId, Generator, HitcountsMapObserver, RandBytesGenerator, SimpleEventManager, SimpleMonitor, SimpleRestartingEventManager, StdScheduledMutator}, schedulers::QueueScheduler, stages::StdMutationalStage, state::{HasCorpus, StdState}, Error, Evaluator
|
common::{HasMetadata, HasNamedMetadata}, corpus::{Corpus, InMemoryCorpus, OnDiskCorpus}, events::{launcher::Launcher, EventConfig}, executors::ExitKind, feedback_or, feedback_or_fast, feedbacks::{CrashFeedback, MaxMapFeedback, TimeoutFeedback}, fuzzer::{Fuzzer, StdFuzzer}, inputs::{multi::MultipartInput, BytesInput, HasTargetBytes, Input}, monitors::MultiMonitor, observers::{CanTrack, VariableMapObserver}, prelude::{havoc_mutations, minimizer::TopRatedsMetadata, CorpusId, Generator, HitcountsMapObserver, RandBytesGenerator, SimpleEventManager, SimpleMonitor, SimpleRestartingEventManager, StdScheduledMutator}, schedulers::QueueScheduler, stages::StdMutationalStage, state::{HasCorpus, StdState}, Error, Evaluator
|
||||||
};
|
};
|
||||||
|
use libafl_qemu::edges::EDGES_MAP_SIZE_IN_USE;
|
||||||
use libafl_qemu::{
|
use libafl_qemu::{
|
||||||
edges::{self, edges_map_mut_ptr, QemuEdgeCoverageHelper, MAX_EDGES_FOUND}, elf::EasyElf, emu::Emulator, GuestAddr, GuestPhysAddr, QemuExecutor, QemuExitReason, QemuFilterList, QemuHooks, Regs, StdInstrumentationFilter
|
edges::{self, edges_map_mut_ptr, QemuEdgeCoverageHelper, MAX_EDGES_FOUND}, elf::EasyElf, emu::Emulator, GuestAddr, GuestPhysAddr, QemuExecutor, QemuExitReason, QemuFilterList, QemuHooks, Regs, StdInstrumentationFilter
|
||||||
};
|
};
|
||||||
@ -19,7 +20,7 @@ use crate::{
|
|||||||
worst::{AlwaysTrueFeedback, ExecTimeIncFeedback, TimeMaximizerCorpusScheduler, TimeProbMassScheduler, TimeStateMaximizerCorpusScheduler},
|
worst::{AlwaysTrueFeedback, ExecTimeIncFeedback, TimeMaximizerCorpusScheduler, TimeProbMassScheduler, TimeStateMaximizerCorpusScheduler},
|
||||||
qemustate::QemuStateRestoreHelper
|
qemustate::QemuStateRestoreHelper
|
||||||
},
|
},
|
||||||
systemstate::{self, feedbacks::{DumpSystraceFeedback, NovelSystemStateFeedback, SystraceErrorFeedback}, helpers::{get_function_range, load_symbol, try_load_symbol, QemuSystemStateHelper, ISR_SYMBOLS}, observers::QemuSystemStateObserver, schedulers::{GenerationScheduler, LongestTraceScheduler}, stg::{stg_map_mut_slice, GraphMaximizerCorpusScheduler, STGEdge, STGNode, StgFeedback, MAX_STG_NUM}},
|
systemstate::{self, feedbacks::{DumpSystraceFeedback, SystraceErrorFeedback}, helpers::{get_function_range, load_symbol, try_load_symbol, QemuSystemStateHelper}, observers::QemuSystemStateObserver, schedulers::{GenerationScheduler, LongestTraceScheduler}, stg::{stg_map_mut_slice, GraphMaximizerCorpusScheduler, STGEdge, STGNode, StgFeedback, MAX_STG_NUM}},
|
||||||
systemstate::mutational::{input_bytes_to_interrupt_times, InterruptShiftStage, MINIMUM_INTER_ARRIVAL_TIME},
|
systemstate::mutational::{input_bytes_to_interrupt_times, InterruptShiftStage, MINIMUM_INTER_ARRIVAL_TIME},
|
||||||
};
|
};
|
||||||
use std::time::SystemTime;
|
use std::time::SystemTime;
|
||||||
@ -368,9 +369,9 @@ let run_client = |state: Option<_>, mut mgr, _core_id| {
|
|||||||
#[cfg(feature = "observe_edges")]
|
#[cfg(feature = "observe_edges")]
|
||||||
let edges_observer = unsafe { VariableMapObserver::from_mut_slice(
|
let edges_observer = unsafe { VariableMapObserver::from_mut_slice(
|
||||||
"edges",
|
"edges",
|
||||||
edges_map_mut_slice(),
|
OwnedMutSlice::from_raw_parts_mut(edges_map_mut_ptr(), EDGES_MAP_SIZE_IN_USE),
|
||||||
addr_of_mut!(MAX_EDGES_NUM)
|
addr_of_mut!(MAX_EDGES_FOUND),
|
||||||
)};
|
)}.track_indices();
|
||||||
#[cfg(feature = "observer_hitcounts")]
|
#[cfg(feature = "observer_hitcounts")]
|
||||||
let edges_observer = HitcountsMapObserver::new(edges_observer).track_indices();
|
let edges_observer = HitcountsMapObserver::new(edges_observer).track_indices();
|
||||||
|
|
||||||
@ -399,7 +400,7 @@ let run_client = |state: Option<_>, mut mgr, _core_id| {
|
|||||||
let mut feedback = feedback_or!(
|
let mut feedback = feedback_or!(
|
||||||
feedback,
|
feedback,
|
||||||
// New maximization map feedback linked to the edges observer and the feedback state
|
// New maximization map feedback linked to the edges observer and the feedback state
|
||||||
MaxMapFeedback::tracking(&edges_observer, true, true)
|
MaxMapFeedback::new(&edges_observer)
|
||||||
);
|
);
|
||||||
#[cfg(feature = "feed_longest")]
|
#[cfg(feature = "feed_longest")]
|
||||||
let mut feedback = feedback_or!(
|
let mut feedback = feedback_or!(
|
||||||
@ -421,7 +422,7 @@ let run_client = |state: Option<_>, mut mgr, _core_id| {
|
|||||||
#[cfg(feature = "feed_stg_edge")]
|
#[cfg(feature = "feed_stg_edge")]
|
||||||
let mut feedback = feedback_or!(
|
let mut feedback = feedback_or!(
|
||||||
feedback,
|
feedback,
|
||||||
MaxMapFeedback::tracking(&stg_coverage_observer, true, true)
|
MaxMapFeedback::new(&stg_coverage_observer)
|
||||||
);
|
);
|
||||||
|
|
||||||
// A feedback to choose if an input is a solution or not
|
// A feedback to choose if an input is a solution or not
|
||||||
@ -450,7 +451,7 @@ let run_client = |state: Option<_>, mut mgr, _core_id| {
|
|||||||
#[cfg(not(any(feature = "sched_afl", feature = "sched_stg", feature = "sched_genetic")))]
|
#[cfg(not(any(feature = "sched_afl", feature = "sched_stg", feature = "sched_genetic")))]
|
||||||
let scheduler = QueueScheduler::new(); // fallback
|
let scheduler = QueueScheduler::new(); // fallback
|
||||||
#[cfg(feature = "sched_afl",)]
|
#[cfg(feature = "sched_afl",)]
|
||||||
let scheduler = TimeMaximizerCorpusScheduler::new(TimeProbMassScheduler::new());
|
let scheduler = TimeMaximizerCorpusScheduler::new(&edges_observer,TimeProbMassScheduler::new());
|
||||||
#[cfg(feature = "sched_stg")]
|
#[cfg(feature = "sched_stg")]
|
||||||
let scheduler = GraphMaximizerCorpusScheduler::new(&stg_coverage_observer,TimeProbMassScheduler::new());
|
let scheduler = GraphMaximizerCorpusScheduler::new(&stg_coverage_observer,TimeProbMassScheduler::new());
|
||||||
#[cfg(feature = "sched_genetic")]
|
#[cfg(feature = "sched_genetic")]
|
||||||
|
@ -365,7 +365,7 @@ where
|
|||||||
// let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap();
|
// let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap();
|
||||||
let mut numbers : Vec<u32> = vec![];
|
let mut numbers : Vec<u32> = vec![];
|
||||||
for i in 0..num_interrupts {
|
for i in 0..num_interrupts {
|
||||||
prefix.push(u32::to_le_bytes(myrand.between(0, min(maxtick, u32::MAX as u64)).try_into().expect("ticks > u32")));
|
prefix.push(u32::to_le_bytes(myrand.between(0, min(maxtick as usize, u32::MAX as usize)).try_into().expect("ticks > u32")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,6 @@ where
|
|||||||
impl<S> Scheduler for GenerationScheduler<S>
|
impl<S> Scheduler for GenerationScheduler<S>
|
||||||
where
|
where
|
||||||
S: State + HasCorpus + HasMetadata,
|
S: State + HasCorpus + HasMetadata,
|
||||||
S::Input: HasLen,
|
|
||||||
{
|
{
|
||||||
/// get first element in current gen,
|
/// get first element in current gen,
|
||||||
/// if current_gen is empty, swap lists, sort by FavFactor, take top k and return first
|
/// if current_gen is empty, swap lists, sort by FavFactor, take top k and return first
|
||||||
|
Loading…
x
Reference in New Issue
Block a user