From d569df29a35266389445fc698eca6370f8361921 Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Tue, 2 Jul 2024 09:34:56 +0200 Subject: [PATCH] build fixes --- fuzzers/FRET/src/fuzzer.rs | 17 +++++++++-------- fuzzers/FRET/src/systemstate/mutational.rs | 2 +- fuzzers/FRET/src/systemstate/schedulers.rs | 1 - 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/fuzzers/FRET/src/fuzzer.rs b/fuzzers/FRET/src/fuzzer.rs index dc7c72e59c..f9356d22fa 100644 --- a/fuzzers/FRET/src/fuzzer.rs +++ b/fuzzers/FRET/src/fuzzer.rs @@ -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 hashbrown::HashMap; 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::{ 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::{ 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}, 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}, }; use std::time::SystemTime; @@ -368,9 +369,9 @@ let run_client = |state: Option<_>, mut mgr, _core_id| { #[cfg(feature = "observe_edges")] let edges_observer = unsafe { VariableMapObserver::from_mut_slice( "edges", - edges_map_mut_slice(), - addr_of_mut!(MAX_EDGES_NUM) - )}; + OwnedMutSlice::from_raw_parts_mut(edges_map_mut_ptr(), EDGES_MAP_SIZE_IN_USE), + addr_of_mut!(MAX_EDGES_FOUND), + )}.track_indices(); #[cfg(feature = "observer_hitcounts")] 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!( feedback, // 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")] let mut feedback = feedback_or!( @@ -421,7 +422,7 @@ let run_client = |state: Option<_>, mut mgr, _core_id| { #[cfg(feature = "feed_stg_edge")] let mut feedback = feedback_or!( 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 @@ -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")))] let scheduler = QueueScheduler::new(); // fallback #[cfg(feature = "sched_afl",)] - let scheduler = TimeMaximizerCorpusScheduler::new(TimeProbMassScheduler::new()); + let scheduler = TimeMaximizerCorpusScheduler::new(&edges_observer,TimeProbMassScheduler::new()); #[cfg(feature = "sched_stg")] let scheduler = GraphMaximizerCorpusScheduler::new(&stg_coverage_observer,TimeProbMassScheduler::new()); #[cfg(feature = "sched_genetic")] diff --git a/fuzzers/FRET/src/systemstate/mutational.rs b/fuzzers/FRET/src/systemstate/mutational.rs index 3909ada36c..d1e73022ca 100644 --- a/fuzzers/FRET/src/systemstate/mutational.rs +++ b/fuzzers/FRET/src/systemstate/mutational.rs @@ -365,7 +365,7 @@ where // let maxtick : u64 = (_input.exec_time().expect("No duration found").as_nanos() >> 4).try_into().unwrap(); let mut numbers : Vec = vec![]; 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"))); } } } diff --git a/fuzzers/FRET/src/systemstate/schedulers.rs b/fuzzers/FRET/src/systemstate/schedulers.rs index 47c25bebce..6c6d2529f4 100644 --- a/fuzzers/FRET/src/systemstate/schedulers.rs +++ b/fuzzers/FRET/src/systemstate/schedulers.rs @@ -170,7 +170,6 @@ where impl Scheduler for GenerationScheduler where S: State + HasCorpus + HasMetadata, - S::Input: HasLen, { /// get first element in current gen, /// if current_gen is empty, swap lists, sort by FavFactor, take top k and return first