1 #[cfg(fuzzing)] 2 pub mod fuzz_logic { 3 use crate::hpack; 4 use bytes::{BufMut, BytesMut}; 5 use http::header::HeaderName; 6 use std::io::Cursor; 7 fuzz_hpack(data_: &[u8])8 pub fn fuzz_hpack(data_: &[u8]) { 9 let mut decoder_ = hpack::Decoder::new(0); 10 let mut buf = BytesMut::new(); 11 buf.extend(data_); 12 let _dec_res = decoder_.decode(&mut Cursor::new(&mut buf), |_h| {}); 13 14 if let Ok(s) = std::str::from_utf8(data_) { 15 if let Ok(h) = http::Method::from_bytes(s.as_bytes()) { 16 let m_ = hpack::Header::Method(h); 17 let mut encoder = hpack::Encoder::new(0, 0); 18 let _res = encode(&mut encoder, vec![m_]); 19 } 20 } 21 } 22 encode(e: &mut hpack::Encoder, hdrs: Vec<hpack::Header<Option<HeaderName>>>) -> BytesMut23 fn encode(e: &mut hpack::Encoder, hdrs: Vec<hpack::Header<Option<HeaderName>>>) -> BytesMut { 24 let mut dst = BytesMut::with_capacity(1024); 25 e.encode(&mut hdrs.into_iter(), &mut dst); 26 dst 27 } 28 } 29