diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-12-15 00:33:35 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-12-15 00:33:35 +0000 |
| commit | b0f68fa7e0e5e60507aad249d67d643d01132d91 (patch) | |
| tree | 7cbd8fb851323ea3c72dd0f7435a78420d1276e0 | |
| parent | c25294333ba4ac619fff5e65c712edeb592375f5 (diff) | |
| download | gentoo-utils-b0f68fa7e0e5e60507aad249d67d643d01132d91.tar.gz | |
remove static variables from atom parser fuzzer
Stdin and Stdout are already synchronized and available to multiple
threads as needed, we don't need to hold onto instances in a static variable.
| -rw-r--r-- | fuzz/atom/parser/fuzz.rs | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/fuzz/atom/parser/fuzz.rs b/fuzz/atom/parser/fuzz.rs index 83d5787..b3539d6 100644 --- a/fuzz/atom/parser/fuzz.rs +++ b/fuzz/atom/parser/fuzz.rs @@ -3,26 +3,10 @@ use core::slice; use gentoo_utils::{Parseable, atom::Atom}; -use std::{ - io::{self, Write}, - sync::{LazyLock, Mutex}, -}; - -#[derive(Debug)] -struct State { - input: io::Stdin, - output: io::Stdout, -} +use std::io::{self, Write}; #[unsafe(no_mangle)] pub unsafe extern "C" fn LLVMFuzzerTestOneInput(input: *const u8, len: usize) -> i32 { - static PIPES: LazyLock<Mutex<State>> = LazyLock::new(|| { - Mutex::new(State { - input: io::stdin(), - output: io::stdout(), - }) - }); - let slice = unsafe { slice::from_raw_parts(input, len) }; let str = str::from_utf8(slice).expect("expected ascii input"); @@ -30,13 +14,13 @@ pub unsafe extern "C" fn LLVMFuzzerTestOneInput(input: *const u8, len: usize) -> return -1; } - let mut state = PIPES.lock().unwrap(); - - writeln!(&mut state.output, "{str}").unwrap(); - + let stdin = io::stdin(); + let mut stdout = io::stdout(); let mut buffer = String::new(); - state.input.read_line(&mut buffer).unwrap(); + writeln!(&mut stdout, "{str}").unwrap(); + + stdin.read_line(&mut buffer).unwrap(); let control = match buffer.as_str().trim() { "0" => Ok(()), |
