diff --git a/fuzzers/others/libafl-fuzz/Makefile.toml b/fuzzers/others/libafl-fuzz/Makefile.toml index 88b53035d6..f4e9e9e136 100644 --- a/fuzzers/others/libafl-fuzz/Makefile.toml +++ b/fuzzers/others/libafl-fuzz/Makefile.toml @@ -110,7 +110,7 @@ script = ''' # cmplog TODO: AFL_BENCH_UNTIL_CRASH=1 instead of timeout 15s AFL_LLVM_CMPLOG=1 AFL_PATH=${AFL_DIR} ${AFL_CC_PATH} ./test/test-cmplog.c -o ./test/out-cmplog AFL_CORES=1 timeout 5 ${FUZZER} -Z -l 3 -m 0 -V30 -i ./test/seeds_cmplog -o ./test/output-cmplog -c 0 ./test/out-cmplog || true -test -n "$( ls -A ./test/output-cmplog/fuzzer_main/crashes/)" || { +test -n "$( ls ./test/output-cmplog/fuzzer_main/crashes/id:0000* 2>/dev/null )" || { echo "No crashes found" exit 1 } diff --git a/fuzzers/others/libafl-fuzz/src/scheduler.rs b/fuzzers/others/libafl-fuzz/src/scheduler.rs index a5444a22a2..bf74dc4c9e 100644 --- a/fuzzers/others/libafl-fuzz/src/scheduler.rs +++ b/fuzzers/others/libafl-fuzz/src/scheduler.rs @@ -2,27 +2,23 @@ use std::marker::PhantomData; use libafl::{ corpus::{Corpus, CorpusId, HasTestcase, SchedulerTestcaseMetadata, Testcase}, - inputs::{Input, UsesInput}, - observers::{CanTrack, ObserversTuple}, - schedulers::{ - HasQueueCycles, MinimizerScheduler, RemovableScheduler, Scheduler, TestcaseScore, - }, - state::{HasCorpus, HasRand, State}, + inputs::Input, + schedulers::{HasQueueCycles, RemovableScheduler, Scheduler}, + state::HasCorpus, Error, HasMetadata, }; -use libafl_bolts::{serdeany::SerdeAny, tuples::MatchName, AsIter, HasRefCnt}; +use libafl_bolts::tuples::MatchName; -pub enum SupportedSchedulers { +pub enum SupportedSchedulers { Queue(Q, PhantomData), Weighted(W, PhantomData), } -impl RemovableScheduler for SupportedSchedulers +impl RemovableScheduler for SupportedSchedulers where - I: Input, Q: Scheduler + RemovableScheduler, W: Scheduler + RemovableScheduler, - S: UsesInput + HasTestcase + HasMetadata + HasCorpus + HasRand + State, + S: HasCorpus + HasTestcase, { fn on_remove( &mut self, @@ -44,12 +40,12 @@ where } } -impl Scheduler for SupportedSchedulers +impl Scheduler for SupportedSchedulers where I: Input, Q: Scheduler, W: Scheduler, - S: UsesInput + HasTestcase + HasMetadata + HasCorpus + HasRand + State, + S: HasCorpus + HasTestcase, { fn on_add(&mut self, state: &mut S, id: CorpusId) -> Result<(), Error> { match self { @@ -103,7 +99,7 @@ where } } -impl HasQueueCycles for SupportedSchedulers +impl HasQueueCycles for SupportedSchedulers where Q: HasQueueCycles, W: HasQueueCycles, diff --git a/fuzzers/others/tutorial/src/metadata.rs b/fuzzers/others/tutorial/src/metadata.rs index 25255b2608..62543f4211 100644 --- a/fuzzers/others/tutorial/src/metadata.rs +++ b/fuzzers/others/tutorial/src/metadata.rs @@ -34,8 +34,8 @@ where } } -pub type PacketLenMinimizerScheduler = - MinimizerScheduler; +pub type PacketLenMinimizerScheduler = + MinimizerScheduler; #[derive(Serialize, Deserialize, Default, Clone, Debug)] pub struct PacketLenFeedback { diff --git a/libafl_libfuzzer/runtime/src/schedulers.rs b/libafl_libfuzzer/runtime/src/schedulers.rs index fc83b01d98..82ea6298a9 100644 --- a/libafl_libfuzzer/runtime/src/schedulers.rs +++ b/libafl_libfuzzer/runtime/src/schedulers.rs @@ -50,6 +50,15 @@ where fn next(&mut self, _state: &mut S) -> Result { unimplemented!("Not suitable for actual scheduling."); } + + fn set_current_scheduled( + &mut self, + state: &mut S, + next_id: Option, + ) -> Result<(), Error> { + *state.corpus_mut().current_mut() = next_id; + Ok(()) + } } impl MergeScheduler {