@@ -3,12 +3,12 @@ use std::path::PathBuf;
33use crate :: options:: LibfuzzerOptions ;
44
55use libafl:: {
6- Evaluator , HasNamedMetadata ,
7- corpus:: Corpus ,
8- events:: EventProcessor ,
9- inputs:: { HasMutatorBytes , Input , UsesInput } ,
10- stages:: { HasNestedStageStatus , OptionalStage , Stage } ,
11- state:: { HasCorpus , HasRand , State , UsesState } ,
6+ Evaluator , HasMetadata , HasNamedMetadata ,
7+ corpus:: HasCurrentCorpusId ,
8+ events:: SendExiting ,
9+ inputs:: { HasMutatorBytes , Input } ,
10+ stages:: { OptionalStage , Restartable , Stage } ,
11+ state:: { HasCorpus , HasNestedStage , HasRand , Stoppable } ,
1212} ;
1313use libafl_bolts:: tuples:: tuple_list;
1414use libafl_leaf:: { DivergingMutator , NonBlockingMultiMutationalStage } ;
@@ -17,14 +17,18 @@ const NAME_ORCHESTRATOR: &str = "leafo_onetime";
1717
1818pub ( super ) fn make_concolic_stage < I , E , EM , S , Z > (
1919 options : & LibfuzzerOptions ,
20- ) -> impl Stage < E , EM , Z , State = S >
20+ ) -> impl Stage < E , EM , S , Z > + Restartable < S >
2121where
2222 I : Input + HasMutatorBytes + Send + Clone + ' static ,
23- S : State < Input = I > + HasCorpus + HasRand + HasNamedMetadata + HasNestedStageStatus ,
24- <S as HasCorpus >:: Corpus : Corpus < Input = I > ,
25- E : UsesState < State = S > ,
26- EM : EventProcessor < E , Z > + UsesState < State = S > ,
27- Z : Evaluator < E , EM > + UsesState < State = S > ,
23+ EM : SendExiting ,
24+ S : HasCorpus < I >
25+ + HasCurrentCorpusId
26+ + HasRand
27+ + HasNamedMetadata
28+ + HasMetadata
29+ + HasNestedStage
30+ + Stoppable ,
31+ Z : Evaluator < E , EM , I , S > ,
2832{
2933 let orchestrator_path = options
3034 . leaf_orch ( )
0 commit comments