parent
63e82d898e
commit
f3da9da7bf
@ -52,6 +52,7 @@ pub fn fuzz() {
|
|||||||
unsafe {
|
unsafe {
|
||||||
RegistryBuilder::register::<MapFeedbackMetadata<u8>>();
|
RegistryBuilder::register::<MapFeedbackMetadata<u8>>();
|
||||||
RegistryBuilder::register::<RetryCountRestartHelper>();
|
RegistryBuilder::register::<RetryCountRestartHelper>();
|
||||||
|
RegistryBuilder::register::<ExitKind>();
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut signals = [0u8; 64];
|
let mut signals = [0u8; 64];
|
||||||
|
@ -15,7 +15,7 @@ use core::{
|
|||||||
use libafl_bolts::tuples::{RefIndexable, tuple_list};
|
use libafl_bolts::tuples::{RefIndexable, tuple_list};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
Error,
|
Error, HasMetadata,
|
||||||
corpus::{Corpus, Testcase},
|
corpus::{Corpus, Testcase},
|
||||||
events::{Event, EventFirer, EventRestarter},
|
events::{Event, EventFirer, EventRestarter},
|
||||||
executors::{
|
executors::{
|
||||||
@ -345,6 +345,7 @@ pub fn run_observers_and_save_state<E, EM, I, OF, S, Z>(
|
|||||||
|
|
||||||
if is_solution {
|
if is_solution {
|
||||||
let mut new_testcase = Testcase::from(input.clone());
|
let mut new_testcase = Testcase::from(input.clone());
|
||||||
|
new_testcase.add_metadata(exitkind);
|
||||||
new_testcase.set_parent_id_optional(*state.corpus().current());
|
new_testcase.set_parent_id_optional(*state.corpus().current());
|
||||||
|
|
||||||
if let Ok(mut tc) = state.current_testcase_mut() {
|
if let Ok(mut tc) = state.current_testcase_mut() {
|
||||||
|
@ -94,6 +94,7 @@ pub trait ExecutionProcessor<EM, I, OT, S> {
|
|||||||
manager: &mut EM,
|
manager: &mut EM,
|
||||||
input: &I,
|
input: &I,
|
||||||
exec_res: &ExecuteInputResult,
|
exec_res: &ExecuteInputResult,
|
||||||
|
exit_kind: &ExitKind,
|
||||||
observers: &OT,
|
observers: &OT,
|
||||||
) -> Result<Option<CorpusId>, Error>;
|
) -> Result<Option<CorpusId>, Error>;
|
||||||
|
|
||||||
@ -409,6 +410,7 @@ where
|
|||||||
manager: &mut EM,
|
manager: &mut EM,
|
||||||
input: &I,
|
input: &I,
|
||||||
exec_res: &ExecuteInputResult,
|
exec_res: &ExecuteInputResult,
|
||||||
|
exit_kind: &ExitKind,
|
||||||
observers: &OT,
|
observers: &OT,
|
||||||
) -> Result<Option<CorpusId>, Error> {
|
) -> Result<Option<CorpusId>, Error> {
|
||||||
let corpus = if exec_res.is_corpus() {
|
let corpus = if exec_res.is_corpus() {
|
||||||
@ -429,6 +431,7 @@ where
|
|||||||
if exec_res.is_solution() {
|
if exec_res.is_solution() {
|
||||||
// The input is a solution, add it to the respective corpus
|
// The input is a solution, add it to the respective corpus
|
||||||
let mut testcase = Testcase::from(input.clone());
|
let mut testcase = Testcase::from(input.clone());
|
||||||
|
testcase.add_metadata(*exit_kind);
|
||||||
testcase.set_parent_id_optional(*state.corpus().current());
|
testcase.set_parent_id_optional(*state.corpus().current());
|
||||||
if let Ok(mut tc) = state.current_testcase_mut() {
|
if let Ok(mut tc) = state.current_testcase_mut() {
|
||||||
tc.found_objective();
|
tc.found_objective();
|
||||||
@ -519,7 +522,8 @@ where
|
|||||||
send_events: bool,
|
send_events: bool,
|
||||||
) -> Result<(ExecuteInputResult, Option<CorpusId>), Error> {
|
) -> Result<(ExecuteInputResult, Option<CorpusId>), Error> {
|
||||||
let exec_res = self.check_results(state, manager, input, observers, exit_kind)?;
|
let exec_res = self.check_results(state, manager, input, observers, exit_kind)?;
|
||||||
let corpus_id = self.process_execution(state, manager, input, &exec_res, observers)?;
|
let corpus_id =
|
||||||
|
self.process_execution(state, manager, input, &exec_res, exit_kind, observers)?;
|
||||||
if send_events {
|
if send_events {
|
||||||
self.serialize_and_dispatch(state, manager, input, &exec_res, observers, exit_kind)?;
|
self.serialize_and_dispatch(state, manager, input, &exec_res, observers, exit_kind)?;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user