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