35 lines
917 B
Rust
35 lines
917 B
Rust
#![no_main]
|
|
use libfuzzer_sys::fuzz_target;
|
|
|
|
fuzz_target!(|data: &[u8]| {
|
|
let mut state = dd3_protocol::ReassemblyState::default();
|
|
let mut buffer = [0u8; 4096];
|
|
|
|
let mut pos = 0usize;
|
|
while pos + 7 <= data.len() {
|
|
let batch_id = u16::from_le_bytes([data[pos], data[pos + 1]]);
|
|
let idx = data[pos + 2];
|
|
let cnt = data[pos + 3];
|
|
let total_len = u16::from_le_bytes([data[pos + 4], data[pos + 5]]);
|
|
let chunk_len = data[pos + 6] as usize;
|
|
pos += 7;
|
|
if pos + chunk_len > data.len() {
|
|
break;
|
|
}
|
|
let chunk = &data[pos..pos + chunk_len];
|
|
pos += chunk_len;
|
|
|
|
let _ = dd3_protocol::push_chunk(
|
|
&mut state,
|
|
batch_id,
|
|
idx,
|
|
cnt,
|
|
total_len,
|
|
chunk,
|
|
0,
|
|
5000,
|
|
4096,
|
|
&mut buffer,
|
|
);
|
|
}
|
|
}); |