MCPcopy Create free account
hub / github.com/MultiFuzz/MultiFuzz / init_workdir

Function init_workdir

hail-fuzz/src/config.rs:225–262  ·  view source on GitHub ↗
(config: &Config)

Source from the content-addressed store, hash-verified

223}
224
225pub(crate) fn init_workdir(config: &Config) -> anyhow::Result<WorkdirLock> {
226 let workdir = &config.workdir;
227
228 std::fs::create_dir_all(workdir.join("crashes")).context("Error creating crash directory")?;
229 std::fs::create_dir_all(workdir.join("hangs")).context("Error creating hang directory.")?;
230
231 let lock = WorkdirLock::new(workdir.join(".lock"))?;
232
233 std::fs::write(
234 workdir.join("settings.json"),
235 &serde_json::to_vec_pretty(&HailFuzzSettings {
236 firmware_config: config.firmware.path.canonicalize()?,
237 fuzzer_path: std::env::current_exe()?,
238 })?,
239 )?;
240
241 if !config.fuzzer.resume {
242 let _ = std::fs::remove_dir_all(workdir.join("queue"));
243
244 let stats_path = workdir.join("stats.csv");
245 let _ = std::fs::remove_file(&stats_path);
246 if parse_bool_env("ENABLE_STATS_HEADER")?.unwrap_or(false) {
247 std::fs::write(&stats_path, b"time,execs,crashes,unique_crashes,hangs,unique_hangs,coverage,blocks,inputs,total_input_bytes,total_instructions,dictionary_items\n").context("Failed to write to stats file")?;
248 }
249 }
250 else {
251 // Try to move old queue directory in place of imports.
252 let _ = std::fs::remove_dir_all(workdir.join("imports"));
253 let _ = std::fs::rename(workdir.join("queue"), workdir.join("imports"));
254 }
255
256 let _ = std::fs::create_dir_all(workdir.join("cmplog"));
257
258 std::fs::create_dir_all(workdir.join("queue"))
259 .context("Error creating directory for input queue.")?;
260
261 Ok(lock)
262}
263
264pub fn add_ctrlc_handler() -> Arc<AtomicBool> {
265 let flag = Arc::new(AtomicBool::new(false));

Callers 2

runFunction · 0.85
runFunction · 0.85

Calls

no outgoing calls

Tested by 1

runFunction · 0.68