25 lines
635 B
Rust
25 lines
635 B
Rust
#![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();
|
|
});
|