summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Turner <jturner.usa@gmail.com>2025-12-15 00:33:35 +0000
committerJohn Turner <jturner.usa@gmail.com>2025-12-15 00:33:35 +0000
commitb0f68fa7e0e5e60507aad249d67d643d01132d91 (patch)
tree7cbd8fb851323ea3c72dd0f7435a78420d1276e0
parentc25294333ba4ac619fff5e65c712edeb592375f5 (diff)
downloadgentoo-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.rs28
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(()),