Skip to main content

libinject/
fuzzer.rs

1use crate::{drcore::log, pipe, trajectory};
2use navigator::pipe_event::{FuzzEvent, PipeEvent};
3
4/// Expose an extern C fn (callable from winafl-netspoof) that sends a FuzzEvent::SoftStart event
5/// down the pipe to the navigator.
6#[unsafe(no_mangle)]
7pub extern "C" fn emit_fuzz_softstart() {
8    log(&format!("[fuzz] SoftStart Event"));
9    trajectory::record_rollback_sub_trajectory();
10    pipe::send(&PipeEvent::Fuzz(FuzzEvent::SoftStart));
11}
12
13/// Expose an extern C fn (callable from winafl-netspoof) that sends a FuzzEvent::SoftRollback
14/// event down the pipe to the navigator.
15#[unsafe(no_mangle)]
16pub extern "C" fn emit_fuzz_softrollback() {
17    log(&format!("[fuzz] SoftRollback Event"));
18    trajectory::restore_rollback_sub_trajectory();
19    pipe::send(&PipeEvent::Fuzz(FuzzEvent::SoftRollback));
20}
21
22/// Expose an extern C fn (callable from winafl-netspoof) that sends a FuzzEvent::Restart
23/// event down the pipe to the navigator.
24#[unsafe(no_mangle)]
25pub extern "C" fn emit_fuzz_restart() {
26    log(&format!("[fuzz] Restart Event"));
27    pipe::send(&PipeEvent::Fuzz(FuzzEvent::Restart));
28}