libnyx_fuzz_runner 0.1.3

libnyx fork only for publishing
Documentation
use nix::sys::wait::WaitStatus;

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ExitReason {
    Normal(i32),
    Timeout,
    Signaled(i32),
    Crash(Vec<u8>),
    Asan,
    Stopped(i32),
    FuzzerError,
    InvalidWriteToPayload(Vec<u8>),
}

impl ExitReason {
    pub fn from_wait_status(status: WaitStatus) -> ExitReason {
        return match status {
            WaitStatus::Exited(_, return_value) => ExitReason::Normal(return_value),
            WaitStatus::Signaled(_, signal, _) => ExitReason::Signaled(signal as i32),
            WaitStatus::Stopped(_, signal) => ExitReason::Stopped(signal as i32),
            _ => panic!("Unknown WaitStatus: {:?}", status),
        };
    }

    pub fn is_normal(&self) -> bool{
        use ExitReason::*;
        match self {
            Normal(_) => return true,
            _ => return false,
        }
    }

    pub fn name(&self) -> &str{
        use ExitReason::*;
        match self {
            Normal(_) => return "normal",
            Timeout => return "timeout",
            Signaled(_) => return "signal",
            Crash(_) => return "crash",
            Asan => return "asan",
            Stopped(_) => return "stop",
            InvalidWriteToPayload(_) => return "invalid_write_to_payload_buffer",
            FuzzerError => unreachable!(),
        }
    }
}