Skip to content

Commit 4596201

Browse files
authored
Revert "Pass Handle to construct CalibrationStage (#3356)" (#3359)
This reverts commit c917a02.
1 parent c917a02 commit 4596201

File tree

27 files changed

+131
-207
lines changed

27 files changed

+131
-207
lines changed

crates/libafl/src/stages/calibrate.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use crate::{
1717
corpus::{Corpus, HasCurrentCorpusId, SchedulerTestcaseMetadata},
1818
events::{Event, EventFirer, EventWithStats, LogSeverity},
1919
executors::{Executor, ExitKind, HasObservers},
20-
feedbacks::map::MapFeedbackMetadata,
20+
feedbacks::{HasObserverHandle, map::MapFeedbackMetadata},
2121
fuzzer::Evaluator,
2222
inputs::Input,
2323
monitors::stats::{AggregatorOps, UserStats, UserStatsValue},
@@ -400,32 +400,30 @@ where
400400
{
401401
/// Create a new [`CalibrationStage`].
402402
#[must_use]
403-
pub fn new(observer_handle: &Handle<C>, map_feedback_name: Cow<'static, str>) -> Self
403+
pub fn new<F>(map_feedback: &F) -> Self
404404
where
405-
C: Named,
405+
F: HasObserverHandle<Observer = C> + Named,
406406
{
407+
let map_name = map_feedback.name().clone();
407408
Self {
408-
map_observer_handle: observer_handle.clone(),
409-
map_name: map_feedback_name.clone(),
409+
map_observer_handle: map_feedback.observer_handle().clone(),
410+
map_name: map_name.clone(),
410411
stage_max: CAL_STAGE_START,
411412
track_stability: true,
412413
phantom: PhantomData,
413414
name: Cow::Owned(
414-
CALIBRATION_STAGE_NAME.to_owned() + ":" + map_feedback_name.into_owned().as_str(),
415+
CALIBRATION_STAGE_NAME.to_owned() + ":" + map_name.into_owned().as_str(),
415416
),
416417
}
417418
}
418419

419420
/// Create a new [`CalibrationStage`], but without checking stability.
420421
#[must_use]
421-
pub fn ignore_stability<F>(
422-
observer_handle: &Handle<C>,
423-
map_feedback_name: Cow<'static, str>,
424-
) -> Self
422+
pub fn ignore_stability<F>(map_feedback: &F) -> Self
425423
where
426-
C: Named,
424+
F: HasObserverHandle<Observer = C> + Named,
427425
{
428-
let mut ret = Self::new(observer_handle, map_feedback_name);
426+
let mut ret = Self::new(map_feedback);
429427
ret.track_stability = false;
430428
ret
431429
}

crates/libafl_libfuzzer/runtime/src/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ macro_rules! fuzz_with {
187187
misc::should_use_grimoire,
188188
observers::{MappedEdgeMapObserver, SizeValueObserver},
189189
};
190-
use libafl_bolts::{tuples::Handled, Named};
191190

192191
let edge_maker = &$edge_maker;
193192

@@ -197,7 +196,6 @@ macro_rules! fuzz_with {
197196
let grimoire = grimoire_metadata.should();
198197

199198
let edges_observer = edge_maker().track_indices().track_novelties();
200-
let edges_observer_name = edges_observer.name().clone();
201199
let size_edges_observer = MappedEdgeMapObserver::new(edge_maker(), SizeValueObserver::default());
202200

203201
let keep_observer = LibfuzzerKeepFeedback::new();
@@ -232,7 +230,7 @@ macro_rules! fuzz_with {
232230
let generalization = GeneralizationStage::new(&edges_observer);
233231
let generalization = IfStage::new(|_, _, _, _| Ok(grimoire.into()), tuple_list!(generalization));
234232

235-
let calibration = CalibrationStage::new(&edges_observer.handle(), edges_observer_name);
233+
let calibration = CalibrationStage::new(&map_feedback);
236234

237235
let add_extra_feedback = $extra_feedback;
238236
let coverage_feedback = add_extra_feedback(

crates/libafl_sugar/src/forkserver.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//! An `afl`-style forkserver fuzzer.
22
//! Use this if your target has complex state that needs to be reset.
3-
use alloc::borrow::Cow;
43
use core::{net::SocketAddr, time::Duration};
54
use std::{fs, path::PathBuf};
65

@@ -38,7 +37,7 @@ use libafl_bolts::{
3837
ownedref::OwnedRefMut,
3938
rands::StdRand,
4039
shmem::{ShMem, ShMemProvider, UnixShMemProvider},
41-
tuples::{Handled, Merge, tuple_list},
40+
tuples::{Merge, tuple_list},
4241
};
4342
use libafl_targets::AflppCmpLogMap;
4443
use typed_builder::TypedBuilder;
@@ -152,8 +151,7 @@ impl ForkserverBytesCoverageSugar<'_> {
152151
// Extra MapFeedback to deduplicate finds according to the cov map
153152
let map_objective = MaxMapFeedback::with_name("map_objective", &edges_observer);
154153

155-
let calibration =
156-
CalibrationStage::new(&edges_observer.handle(), Cow::Borrowed("map_feedback"));
154+
let calibration = CalibrationStage::new(&map_feedback);
157155

158156
// Feedback to rate the interestingness of an input
159157
// This one is composed by two Feedbacks in OR

crates/libafl_sugar/src/inprocess.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
//! In-Process fuzzing made easy.
22
//! Use this sugar for scaling `libfuzzer`-style fuzzers.
33
4-
use alloc::borrow::Cow;
54
use core::{
65
fmt::{self, Debug, Formatter},
76
net::SocketAddr,
@@ -37,7 +36,7 @@ use libafl_bolts::{
3736
ownedref::OwnedMutSlice,
3837
rands::StdRand,
3938
shmem::{ShMemProvider, StdShMemProvider},
40-
tuples::{Handled, Merge, tuple_list},
39+
tuples::{Merge, tuple_list},
4140
};
4241
use libafl_targets::{CmpLogObserver, EDGES_MAP_ALLOCATED_SIZE, edges_map_mut_ptr};
4342
use typed_builder::TypedBuilder;
@@ -171,8 +170,7 @@ where
171170
// Extra MapFeedback to deduplicate finds according to the cov map
172171
let map_objective = MaxMapFeedback::with_name("map_objective", &edges_observer);
173172

174-
let calibration =
175-
CalibrationStage::new(&edges_observer.handle(), Cow::Borrowed("map_feedback"));
173+
let calibration = CalibrationStage::new(&map_feedback);
176174

177175
// Feedback to rate the interestingness of an input
178176
// This one is composed by two Feedbacks in OR

crates/libafl_sugar/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ pub const CORPUS_CACHE_SIZE: usize = 4096;
6363
#[cfg(feature = "python")]
6464
use pyo3::prelude::*;
6565

66-
extern crate alloc;
67-
6866
/// The sugar python module
6967
#[cfg(feature = "python")]
7068
#[pymodule]

crates/libafl_sugar/src/qemu.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
//! In-Process fuzzer with `QEMU`-based binary-only instrumentation
2-
use alloc::borrow::Cow;
32
use core::{
43
fmt::{self, Debug, Formatter},
54
net::SocketAddr,
@@ -36,7 +35,7 @@ use libafl_bolts::{
3635
ownedref::OwnedMutSlice,
3736
rands::StdRand,
3837
shmem::{ShMemProvider, StdShMemProvider},
39-
tuples::{Handled, Merge, tuple_list},
38+
tuples::{Merge, tuple_list},
4039
};
4140
#[cfg(not(any(feature = "mips", feature = "hexagon")))]
4241
use libafl_qemu::modules::CmpLogModule;
@@ -188,10 +187,8 @@ where
188187
// Extra MapFeedback to deduplicate finds according to the cov map
189188
let map_objective = MaxMapFeedback::with_name("map_objective", &edges_observer);
190189

191-
let calibration =
192-
CalibrationStage::new(&edges_observer.handle(), Cow::Borrowed("map_feedback"));
193-
let calibration_cmplog =
194-
CalibrationStage::new(&edges_observer.handle(), Cow::Borrowed("map_feedback"));
190+
let calibration = CalibrationStage::new(&map_feedback);
191+
let calibration_cmplog = CalibrationStage::new(&map_feedback);
195192

196193
// Feedback to rate the interestingness of an input
197194
// This one is composed by two Feedbacks in OR

fuzzers/baby/baby_fuzzer_custom_executor/src/main.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[cfg(windows)]
22
use std::ptr::write_volatile;
3-
use std::{borrow::Cow, marker::PhantomData, path::PathBuf, ptr::write};
3+
use std::{marker::PhantomData, path::PathBuf, ptr::write};
44

55
#[cfg(feature = "tui")]
66
use libafl::monitors::tui::TuiMonitor;
@@ -22,12 +22,7 @@ use libafl::{
2222
state::{HasCorpus, HasExecutions, StdState},
2323
BloomInputFilter,
2424
};
25-
use libafl_bolts::{
26-
current_nanos, nonzero,
27-
rands::StdRand,
28-
tuples::{tuple_list, Handled},
29-
AsSlice,
30-
};
25+
use libafl_bolts::{current_nanos, nonzero, rands::StdRand, tuples::tuple_list, AsSlice};
3126
/// Coverage map with explicit assignments due to the lack of instrumentation
3227
static mut SIGNALS: [u8; 16] = [0; 16];
3328
static mut SIGNALS_PTR: *mut u8 = &raw mut SIGNALS as _;
@@ -90,7 +85,7 @@ pub fn main() {
9085
// Feedback to rate the interestingness of an input
9186
let mut feedback = MaxMapFeedback::new(&observer);
9287

93-
let calibration_stage = CalibrationStage::new(&observer.handle(), Cow::Borrowed("signals"));
88+
let calibration_stage = CalibrationStage::new(&feedback);
9489
let stats_stage = AflStatsStage::builder()
9590
.map_observer(&observer)
9691
.build()

fuzzers/baby/tutorial/src/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//#![feature(min_const_generics)]
55

66
use core::time::Duration;
7-
use std::{borrow::Cow, env, path::PathBuf};
7+
use std::{env, path::PathBuf};
88

99
use libafl::{
1010
corpus::{Corpus, InMemoryCorpus, OnDiskCorpus},
@@ -21,11 +21,7 @@ use libafl::{
2121
state::{HasCorpus, StdState},
2222
Error, Fuzzer,
2323
};
24-
use libafl_bolts::{
25-
rands::StdRand,
26-
tuples::{tuple_list, Handled},
27-
AsSlice,
28-
};
24+
use libafl_bolts::{rands::StdRand, tuples::tuple_list, AsSlice};
2925
use libafl_targets::{libfuzzer_initialize, libfuzzer_test_one_input, std_edges_map_observer};
3026

3127
mod input;
@@ -97,7 +93,7 @@ fn fuzz(corpus_dirs: &[PathBuf], objective_dir: PathBuf, broker_port: u16) -> Re
9793

9894
let map_feedback = MaxMapFeedback::new(&edges_observer);
9995

100-
let calibration = CalibrationStage::new(&edges_observer.handle(), Cow::Borrowed("edges"));
96+
let calibration = CalibrationStage::new(&map_feedback);
10197

10298
// Feedback to rate the interestingness of an input
10399
// This one is composed by two Feedbacks in OR

fuzzers/binary_only/fuzzbench

Whitespace-only changes.

fuzzers/binary_only/fuzzbench_fork_qemu/src/fuzzer.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use core::cell::RefCell;
44
#[cfg(unix)]
55
use std::os::unix::io::FromRawFd;
66
use std::{
7-
borrow::Cow,
87
env,
98
fs::{self, File, OpenOptions},
109
io::Write,
@@ -45,7 +44,7 @@ use libafl_bolts::{
4544
current_time,
4645
rands::StdRand,
4746
shmem::{ShMemProvider, StdShMemProvider},
48-
tuples::{tuple_list, Handled, Merge},
47+
tuples::{tuple_list, Merge},
4948
AsSlice, AsSliceMut,
5049
};
5150
use libafl_qemu::{
@@ -277,7 +276,7 @@ fn fuzz(
277276

278277
let map_feedback = MaxMapFeedback::new(&edges_observer);
279278

280-
let calibration = CalibrationStage::new(&edges_observer.handle(), Cow::Borrowed("edges"));
279+
let calibration = CalibrationStage::new(&map_feedback);
281280

282281
// Feedback to rate the interestingness of an input
283282
// This one is composed by two Feedbacks in OR

0 commit comments

Comments
 (0)