use crate::config::*; use serde_derive::Serialize; use serde_derive::Deserialize; use std::time::Duration; #[derive(Clone, Serialize, Deserialize)] pub struct QemuKernelConfigLoader { pub qemu_binary: Option, pub kernel: Option, pub ramfs: Option, pub debug: Option, } #[derive(Clone, Serialize, Deserialize)] pub struct QemuSnapshotConfigLoader { pub qemu_binary: Option, pub hda: Option, pub presnapshot: Option, pub snapshot_path: Option, pub debug: Option, } #[derive(Clone, Serialize, Deserialize)] pub struct ForkServerConfigLoader { pub args: Option>, pub hide_output: Option, pub input_size: Option, pub env: Option>, } #[derive(Clone, Serialize, Deserialize)] pub enum FuzzRunnerConfigLoader { QemuKernel(QemuKernelConfigLoader), QemuSnapshot(QemuSnapshotConfigLoader), } #[derive(Clone, Serialize, Deserialize)] pub struct FuzzerConfigLoader { #[serde(default = "default_write_protected_input_buffer")] pub write_protected_input_buffer: bool, pub workdir_path: Option, pub bitmap_size: Option, pub mem_limit: Option, pub time_limit: Option, pub target_binary: Option, pub threads: Option, pub thread_id: Option, pub cpu_pin_start_at: Option, pub seed_path: Option, pub dict: Option>>, pub snapshot_placement: Option, pub dump_python_code_for_inputs: Option, pub exit_after_first_crash: Option, } fn default_write_protected_input_buffer() -> bool { false } #[derive(Clone, Serialize, Deserialize)] pub struct ConfigLoader { pub include_default_config_path: Option, pub runner: FuzzRunnerConfigLoader, pub fuzz: FuzzerConfigLoader, }