/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 | | |
8 | 13.4k | pub fn fuzz_hpack(data_: &[u8]) { |
9 | 13.4k | let mut decoder_ = hpack::Decoder::new(0); |
10 | 13.4k | let mut buf = BytesMut::new(); |
11 | 13.4k | buf.extend(data_); |
12 | 13.2M | let _dec_res = decoder_.decode(&mut Cursor::new(&mut buf), |_h| {}); |
13 | | |
14 | 13.4k | if let Ok(s) = std::str::from_utf8(data_) { |
15 | 1.00k | if let Ok(h) = http::Method::from_bytes(s.as_bytes()) { |
16 | 364 | let m_ = hpack::Header::Method(h); |
17 | 364 | let mut encoder = hpack::Encoder::new(0, 0); |
18 | 364 | let _res = encode(&mut encoder, vec![m_]); |
19 | 643 | } |
20 | 12.4k | } |
21 | 13.4k | } |
22 | | |
23 | 364 | fn encode(e: &mut hpack::Encoder, hdrs: Vec<hpack::Header<Option<HeaderName>>>) -> BytesMut { |
24 | 364 | let mut dst = BytesMut::with_capacity(1024); |
25 | 364 | e.encode(&mut hdrs.into_iter(), &mut dst); |
26 | 364 | dst |
27 | 364 | } |
28 | | } |