parent
e4a52cde05
commit
465ba41116
@ -0,0 +1,30 @@ |
||||
|
||||
[package] |
||||
name = "tungstenite-fuzz" |
||||
version = "0.0.1" |
||||
authors = ["Sergey \"Shnatsel\" Davidoff <shnatsel@gmail.com>"] |
||||
publish = false |
||||
|
||||
[package.metadata] |
||||
cargo-fuzz = true |
||||
|
||||
[dependencies.tungstenite] |
||||
path = ".." |
||||
[dependencies.libfuzzer-sys] |
||||
git = "https://github.com/rust-fuzz/libfuzzer-sys.git" |
||||
|
||||
# Prevent this from interfering with workspaces |
||||
[workspace] |
||||
members = ["."] |
||||
|
||||
[[bin]] |
||||
name = "parse_frame" |
||||
path = "fuzz_targets/parse_frame.rs" |
||||
|
||||
[[bin]] |
||||
name = "read_message_server" |
||||
path = "fuzz_targets/read_message_server.rs" |
||||
|
||||
[[bin]] |
||||
name = "read_message_client" |
||||
path = "fuzz_targets/read_message_client.rs" |
@ -0,0 +1,12 @@ |
||||
#![no_main] |
||||
#[macro_use] extern crate libfuzzer_sys; |
||||
extern crate tungstenite; |
||||
|
||||
use std::io::Cursor; |
||||
|
||||
fuzz_target!(|data: &[u8]| { |
||||
let vector: Vec<u8> = data.into(); |
||||
let mut cursor = Cursor::new(vector); |
||||
|
||||
tungstenite::protocol::frame::Frame::parse(&mut cursor); |
||||
}); |
@ -0,0 +1,37 @@ |
||||
#![no_main] |
||||
#[macro_use] extern crate libfuzzer_sys; |
||||
extern crate tungstenite; |
||||
|
||||
use std::io; |
||||
use std::io::Cursor; |
||||
use tungstenite::WebSocket; |
||||
use tungstenite::protocol::Role; |
||||
//use std::result::Result;
|
||||
|
||||
// FIXME: copypasted from tungstenite's protocol/mod.rs
|
||||
|
||||
struct WriteMoc<Stream>(Stream); |
||||
|
||||
impl<Stream> io::Write for WriteMoc<Stream> { |
||||
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { |
||||
Ok(buf.len()) |
||||
} |
||||
fn flush(&mut self) -> io::Result<()> { |
||||
Ok(()) |
||||
} |
||||
} |
||||
|
||||
impl<Stream: io::Read> io::Read for WriteMoc<Stream> { |
||||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { |
||||
self.0.read(buf) |
||||
} |
||||
} |
||||
|
||||
// end of copypasta
|
||||
|
||||
fuzz_target!(|data: &[u8]| { |
||||
//let vector: Vec<u8> = data.into();
|
||||
let cursor = Cursor::new(data); |
||||
let mut socket = WebSocket::from_raw_socket(WriteMoc(cursor), Role::Client, None); |
||||
socket.read_message(); |
||||
}); |
@ -0,0 +1,37 @@ |
||||
#![no_main] |
||||
#[macro_use] extern crate libfuzzer_sys; |
||||
extern crate tungstenite; |
||||
|
||||
use std::io; |
||||
use std::io::Cursor; |
||||
use tungstenite::WebSocket; |
||||
use tungstenite::protocol::Role; |
||||
//use std::result::Result;
|
||||
|
||||
// FIXME: copypasted from tungstenite's protocol/mod.rs
|
||||
|
||||
struct WriteMoc<Stream>(Stream); |
||||
|
||||
impl<Stream> io::Write for WriteMoc<Stream> { |
||||
fn write(&mut self, buf: &[u8]) -> io::Result<usize> { |
||||
Ok(buf.len()) |
||||
} |
||||
fn flush(&mut self) -> io::Result<()> { |
||||
Ok(()) |
||||
} |
||||
} |
||||
|
||||
impl<Stream: io::Read> io::Read for WriteMoc<Stream> { |
||||
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> { |
||||
self.0.read(buf) |
||||
} |
||||
} |
||||
|
||||
// end of copypasta
|
||||
|
||||
fuzz_target!(|data: &[u8]| { |
||||
//let vector: Vec<u8> = data.into();
|
||||
let cursor = Cursor::new(data); |
||||
let mut socket = WebSocket::from_raw_socket(WriteMoc(cursor), Role::Server, None); |
||||
socket.read_message(); |
||||
}); |
Loading…
Reference in new issue