more generic reordering

This commit is contained in:
Dominik Maier 2021-02-05 01:15:03 +01:00
parent 3ddf4d4d23
commit 8e512a68b5
3 changed files with 18 additions and 18 deletions

View File

@ -63,7 +63,7 @@ where
#[cfg(unix)]
#[cfg(feature = "std")]
unsafe {
set_oncrash_ptrs::<EM, C, OT, FT, I, R>(_state, _event_mgr, _input);
set_oncrash_ptrs::<C, EM, FT, I, OT, R>(_state, _event_mgr, _input);
}
Ok(())
}
@ -84,7 +84,7 @@ where
#[cfg(unix)]
#[cfg(feature = "std")]
unsafe {
reset_oncrash_ptrs::<EM, C, OT, FT, I, R>();
reset_oncrash_ptrs::<C, EM, FT, I, OT, R>();
}
Ok(())
}
@ -151,7 +151,7 @@ where
{
#[cfg(feature = "std")]
unsafe {
setup_crash_handlers::<EM, C, OT, FT, I, R>();
setup_crash_handlers::<C, EM, FT, I, OT, R>();
}
Self {
@ -214,7 +214,7 @@ pub mod unix_signals {
/// This is neede for certain non-rust side effects, as well as unix signal handling.
static mut CURRENT_INPUT_PTR: *const c_void = ptr::null();
pub unsafe extern "C" fn libaflrs_executor_inmem_handle_crash<EM, C, OT, FT, I, R>(
pub unsafe extern "C" fn libaflrs_executor_inmem_handle_crash<C, EM, FT, I, OT, R>(
_sig: c_int,
info: siginfo_t,
_void: c_void,
@ -257,7 +257,7 @@ pub mod unix_signals {
std::process::exit(139);
}
pub unsafe extern "C" fn libaflrs_executor_inmem_handle_timeout<EM, C, OT, FT, I, R>(
pub unsafe extern "C" fn libaflrs_executor_inmem_handle_timeout<C, EM, FT, I, OT, R>(
_sig: c_int,
_info: siginfo_t,
_void: c_void,
@ -308,7 +308,7 @@ pub mod unix_signals {
}
#[inline]
pub unsafe fn set_oncrash_ptrs<EM, C, OT, FT, I, R>(
pub unsafe fn set_oncrash_ptrs<C, EM, FT, I, OT, R>(
state: &State<C, I, R, FT>,
event_mgr: &mut EM,
input: &I,
@ -326,14 +326,14 @@ pub mod unix_signals {
}
#[inline]
pub unsafe fn reset_oncrash_ptrs<EM, C, OT, FT, I, R>() {
pub unsafe fn reset_oncrash_ptrs<C, EM, FT, I, OT, R>() {
CURRENT_INPUT_PTR = ptr::null();
STATE_PTR = ptr::null();
EVENT_MGR_PTR = ptr::null_mut();
}
// TODO clearly state that manager should be static (maybe put the 'static lifetime?)
pub unsafe fn setup_crash_handlers<EM, C, OT, FT, I, R>()
pub unsafe fn setup_crash_handlers<C, EM, FT, I, OT, R>()
where
EM: EventManager<I>,
C: Corpus<I, R>,
@ -345,7 +345,7 @@ pub mod unix_signals {
let mut sa: sigaction = mem::zeroed();
libc::sigemptyset(&mut sa.sa_mask as *mut libc::sigset_t);
sa.sa_flags = SA_NODEFER | SA_SIGINFO;
sa.sa_sigaction = libaflrs_executor_inmem_handle_crash::<EM, C, OT, FT, I, R> as usize;
sa.sa_sigaction = libaflrs_executor_inmem_handle_crash::<C, EM, FT, I, OT, R> as usize;
for (sig, msg) in &[
(SIGSEGV, "segfault"),
(SIGBUS, "sigbus"),
@ -359,7 +359,7 @@ pub mod unix_signals {
}
}
sa.sa_sigaction = libaflrs_executor_inmem_handle_timeout::<EM, C, OT, FT, I, R> as usize;
sa.sa_sigaction = libaflrs_executor_inmem_handle_timeout::<C, EM, FT, I, OT, R> as usize;
if sigaction(SIGUSR2, &mut sa as *mut sigaction, ptr::null_mut()) < 0 {
panic!("Could not set up sigusr2 handler for timeouts");
}

View File

@ -44,7 +44,7 @@ use utils::{current_milliseconds, Rand};
/// The main fuzzer trait.
pub trait Fuzzer<C, E, EM, FT, ST, I, OT, R>
where
ST: StagesTuple<EM, E, OT, FT, C, I, R>,
ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple,
@ -96,7 +96,7 @@ where
#[derive(Clone, Debug)]
pub struct StdFuzzer<C, E, EM, FT, ST, I, OT, R>
where
ST: StagesTuple<EM, E, OT, FT, C, I, R>,
ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple,
@ -112,7 +112,7 @@ where
impl<C, E, EM, FT, ST, I, OT, R> Fuzzer<C, E, EM, FT, ST, I, OT, R>
for StdFuzzer<C, E, EM, FT, ST, I, OT, R>
where
ST: StagesTuple<EM, E, OT, FT, C, I, R>,
ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple,
@ -132,7 +132,7 @@ where
impl<C, E, EM, FT, ST, I, OT, R> StdFuzzer<C, E, EM, FT, ST, I, OT, R>
where
ST: StagesTuple<EM, E, OT, FT, C, I, R>,
ST: StagesTuple<C, E, EM, FT, I, OT, R>,
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple,

View File

@ -37,7 +37,7 @@ where
) -> Result<(), AflError>;
}
pub trait StagesTuple<EM, E, OT, FT, C, I, R>
pub trait StagesTuple<C, E, EM, FT, I, OT, R>
where
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
@ -59,7 +59,7 @@ where
fn for_each_mut(&mut self, f: fn(&mut dyn Stage<C, E, EM, FT, I, OT, R>));
}
impl<EM, E, OT, FT, C, I, R> StagesTuple<EM, E, OT, FT, C, I, R> for ()
impl<C, E, EM, FT, I, OT, R> StagesTuple<C, E, EM, FT, I, OT, R> for ()
where
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
@ -83,10 +83,10 @@ where
fn for_each_mut(&mut self, _f: fn(&mut dyn Stage<C, E, EM, FT, I, OT, R>)) {}
}
impl<Head, Tail, EM, E, OT, FT, C, I, R> StagesTuple<EM, E, OT, FT, C, I, R> for (Head, Tail)
impl<Head, Tail, EM, E, OT, FT, C, I, R> StagesTuple<C, E, EM, FT, I, OT, R> for (Head, Tail)
where
Head: Stage<C, E, EM, FT, I, OT, R>,
Tail: StagesTuple<EM, E, OT, FT, C, I, R> + TupleList,
Tail: StagesTuple<C, E, EM, FT, I, OT, R> + TupleList,
EM: EventManager<I>,
E: Executor<I> + HasObservers<OT>,
OT: ObserversTuple,