blob: d973f99672e46f8f65ac633d9087d72899984fe0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#![no_main]
use libfuzzer_sys::fuzz_target;
use tor_socksproto::{Buffer, Handshake, NextStep, SocksProxyHandshake};
fuzz_target!(|data: Vec<&[u8]>| {
let mut data = data;
let mut hs = SocksProxyHandshake::new();
let mut buf = Buffer::new();
loop {
match hs.step(&mut buf) {
Ok(NextStep::Send(_)) => {}
Ok(NextStep::Recv(mut rs)) => {
let Some(v) = data.pop() else { break };
let l = v.len().min(rs.buf().len());
rs.buf()[..l].copy_from_slice(&v[..l]);
let Ok(()) = rs.note_received(l) else { break };
}
Ok(NextStep::Finished(_)) | Err(_) => {
break;
}
}
}
});
|