@@ -26,7 +26,7 @@ use libafl::{
26
26
scheduled:: { havoc_mutations, tokens_mutations, StdScheduledMutator } ,
27
27
token_mutations:: { I2SRandReplace , Tokens } ,
28
28
} ,
29
- observers:: { HitcountsMapObserver , StdMapObserver , TimeObserver } ,
29
+ observers:: { HitcountsMapObserver , StdMapObserver , TimeObserver , TrackingHinted } ,
30
30
schedulers:: { IndexesLenTimeMinimizerScheduler , QueueScheduler } ,
31
31
stages:: { ShadowTracingStage , StdMutationalStage } ,
32
32
state:: { HasCorpus , HasMetadata , StdState } ,
@@ -113,7 +113,8 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
113
113
"edges" ,
114
114
frida_helper. map_mut_ptr ( ) . unwrap ( ) ,
115
115
MAP_SIZE ,
116
- ) ) ;
116
+ ) )
117
+ . track_indices ( ) ;
117
118
118
119
// Create an observation channel to keep track of the execution time
119
120
let time_observer = TimeObserver :: new ( "time" ) ;
@@ -122,7 +123,7 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
122
123
// This one is composed by two Feedbacks in OR
123
124
let mut feedback = feedback_or ! (
124
125
// New maximization map feedback linked to the edges observer and the feedback state
125
- MaxMapFeedback :: tracking ( & edges_observer, true , false ) ,
126
+ MaxMapFeedback :: new ( & edges_observer) ,
126
127
// Time feedback, this one does not need a feedback state
127
128
TimeFeedback :: with_observer( & time_observer)
128
129
) ;
@@ -171,7 +172,8 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
171
172
let mutator = StdScheduledMutator :: new ( havoc_mutations ( ) . merge ( tokens_mutations ( ) ) ) ;
172
173
173
174
// A minimization+queue policy to get testcasess from the corpus
174
- let scheduler = IndexesLenTimeMinimizerScheduler :: new ( QueueScheduler :: new ( ) ) ;
175
+ let scheduler =
176
+ IndexesLenTimeMinimizerScheduler :: new ( & edges_observer, QueueScheduler :: new ( ) ) ;
175
177
176
178
// A fuzzer with feedbacks and a corpus scheduler
177
179
let mut fuzzer = StdFuzzer :: new ( scheduler, feedback, objective) ;
@@ -229,7 +231,8 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
229
231
"edges" ,
230
232
frida_helper. map_mut_ptr ( ) . unwrap ( ) ,
231
233
MAP_SIZE ,
232
- ) ) ;
234
+ ) )
235
+ . track_indices ( ) ;
233
236
234
237
// Create an observation channel to keep track of the execution time
235
238
let time_observer = TimeObserver :: new ( "time" ) ;
@@ -238,7 +241,7 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
238
241
// This one is composed by two Feedbacks in OR
239
242
let mut feedback = feedback_or ! (
240
243
// New maximization map feedback linked to the edges observer and the feedback state
241
- MaxMapFeedback :: tracking ( & edges_observer, true , false ) ,
244
+ MaxMapFeedback :: new ( & edges_observer) ,
242
245
// Time feedback, this one does not need a feedback state
243
246
TimeFeedback :: with_observer( & time_observer)
244
247
) ;
@@ -286,7 +289,8 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
286
289
let mutator = StdScheduledMutator :: new ( havoc_mutations ( ) . merge ( tokens_mutations ( ) ) ) ;
287
290
288
291
// A minimization+queue policy to get testcasess from the corpus
289
- let scheduler = IndexesLenTimeMinimizerScheduler :: new ( QueueScheduler :: new ( ) ) ;
292
+ let scheduler =
293
+ IndexesLenTimeMinimizerScheduler :: new ( & edges_observer, QueueScheduler :: new ( ) ) ;
290
294
291
295
// A fuzzer with feedbacks and a corpus scheduler
292
296
let mut fuzzer = StdFuzzer :: new ( scheduler, feedback, objective) ;
@@ -360,7 +364,8 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
360
364
"edges" ,
361
365
frida_helper. map_mut_ptr ( ) . unwrap ( ) ,
362
366
MAP_SIZE ,
363
- ) ) ;
367
+ ) )
368
+ . track_indices ( ) ;
364
369
365
370
// Create an observation channel to keep track of the execution time
366
371
let time_observer = TimeObserver :: new ( "time" ) ;
@@ -369,7 +374,7 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
369
374
// This one is composed by two Feedbacks in OR
370
375
let mut feedback = feedback_or ! (
371
376
// New maximization map feedback linked to the edges observer and the feedback state
372
- MaxMapFeedback :: tracking ( & edges_observer, true , false ) ,
377
+ MaxMapFeedback :: new ( & edges_observer) ,
373
378
// Time feedback, this one does not need a feedback state
374
379
TimeFeedback :: with_observer( & time_observer)
375
380
) ;
@@ -417,7 +422,8 @@ unsafe fn fuzz(options: &FuzzerOptions) -> Result<(), Error> {
417
422
let mutator = StdScheduledMutator :: new ( havoc_mutations ( ) . merge ( tokens_mutations ( ) ) ) ;
418
423
419
424
// A minimization+queue policy to get testcasess from the corpus
420
- let scheduler = IndexesLenTimeMinimizerScheduler :: new ( QueueScheduler :: new ( ) ) ;
425
+ let scheduler =
426
+ IndexesLenTimeMinimizerScheduler :: new ( & edges_observer, QueueScheduler :: new ( ) ) ;
421
427
422
428
// A fuzzer with feedbacks and a corpus scheduler
423
429
let mut fuzzer = StdFuzzer :: new ( scheduler, feedback, objective) ;
0 commit comments