summaryrefslogtreecommitdiff
path: root/fuzz/fuzzers/fragment.rs
diff options
context:
space:
mode:
Diffstat (limited to 'fuzz/fuzzers/fragment.rs')
-rw-r--r--fuzz/fuzzers/fragment.rs25
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();
+ }
+});