diff options
Diffstat (limited to 'fuzz/fuzzers/fragment.rs')
-rw-r--r-- | fuzz/fuzzers/fragment.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/fuzz/fuzzers/fragment.rs b/fuzz/fuzzers/fragment.rs new file mode 100644 index 00000000..dc8fe821 --- /dev/null +++ b/fuzz/fuzzers/fragment.rs @@ -0,0 +1,25 @@ +#![no_main] +#[macro_use] extern crate libfuzzer_sys; +extern crate rustls; + +use rustls::internal::msgs::fragmenter; +use rustls::internal::msgs::message; +use rustls::internal::msgs::codec::{Codec, Reader}; +use std::collections::VecDeque; + +fuzz_target!(|data: &[u8]| { + let mut rdr = Reader::init(data); + let mut msg = match message::Message::read(&mut rdr) { + Some(msg) => msg, + None => return + }; + msg.decode_payload(); + + let frg = fragmenter::MessageFragmenter::new(5); + let mut out = VecDeque::new(); + frg.fragment(msg, &mut out); + + for mut msg in out { + msg.decode_payload(); + } +}); |