#![no_main] use libfuzzer_sys::fuzz_target; use wgcloak::transport::tls_tcp::FrameCodec; const MAX_INPUT: usize = 64 * 1024; const MAX_FRAME: usize = 16 * 1024; const CHUNK: usize = 97; fuzz_target!(|input: &[u8]| { let input = &input[..input.len().min(MAX_INPUT)]; let Ok(mut codec) = FrameCodec::new(MAX_FRAME) else { return; }; // Feed deliberately uneven chunks so header/payload state transitions are // exercised independently of TCP read boundaries. for chunk in input.chunks(CHUNK) { if codec.feed(chunk).is_err() { break; } } let _ = codec.finish(); });