Skip to content

Commit 9ef6d3e

Browse files
authored
Add more cargo-fuzz targets (#143)
* cargo-fuzz: add new target to parse responses Add a new cargo-fuzz target to test the Response parsing code. * cargo-fuzz: add new targets with relaxed multiple space options Add two new targets to fuzz parsing requests and responses with multiple spaces enabled via ParserConfig.
1 parent 46c9c9b commit 9ef6d3e

File tree

4 files changed

+48
-0
lines changed

4 files changed

+48
-0
lines changed

fuzz/Cargo.toml

+18
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,21 @@ name = "parse_headers"
3636
path = "fuzz_targets/parse_headers.rs"
3737
test = false
3838
doc = false
39+
40+
[[bin]]
41+
name = "parse_response"
42+
path = "fuzz_targets/parse_response.rs"
43+
test = false
44+
doc = false
45+
46+
[[bin]]
47+
name = "parse_response_multspaces"
48+
path = "fuzz_targets/parse_response_multspaces.rs"
49+
test = false
50+
doc = false
51+
52+
[[bin]]
53+
name = "parse_request_multspaces"
54+
path = "fuzz_targets/parse_request_multspaces.rs"
55+
test = false
56+
doc = false
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let mut headers = [httparse::EMPTY_HEADER; 16];
7+
let mut resp = httparse::Request::new(&mut headers);
8+
let _ = httparse::ParserConfig::default()
9+
.allow_multiple_spaces_in_request_line_delimiters(true)
10+
.parse_request(&mut resp, data);
11+
});

fuzz/fuzz_targets/parse_response.rs

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#![no_main]
2+
use libfuzzer_sys::fuzz_target;
3+
4+
fuzz_target!(|data: &[u8]| {
5+
let mut headers = [httparse::EMPTY_HEADER; 16];
6+
let mut resp = httparse::Response::new(&mut headers);
7+
let _ = resp.parse(data);
8+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#![no_main]
2+
3+
use libfuzzer_sys::fuzz_target;
4+
5+
fuzz_target!(|data: &[u8]| {
6+
let mut headers = [httparse::EMPTY_HEADER; 16];
7+
let mut resp = httparse::Response::new(&mut headers);
8+
let _ = httparse::ParserConfig::default()
9+
.allow_multiple_spaces_in_response_status_delimiters(true)
10+
.parse_response(&mut resp, data);
11+
});

0 commit comments

Comments
 (0)