mirror of https://github.com/fafhrd91/actix-web
Add cargo-fuzz targets: header parsing, URI parsing for OSS-Fuzz
This commit is contained in:
parent
a1b4165c34
commit
2ba30e5bef
|
|
@ -0,0 +1,27 @@
|
|||
[package]
|
||||
name = "actix-fuzz"
|
||||
version = "0.0.0"
|
||||
edition = "2021"
|
||||
publish = false
|
||||
|
||||
[package.metadata]
|
||||
cargo-fuzz = true
|
||||
|
||||
[dependencies]
|
||||
libfuzzer-sys = "0.4"
|
||||
actix-http = { path = "../actix-http" }
|
||||
http = "1"
|
||||
bytes = "1"
|
||||
tokio = { version = "1", features = ["rt", "macros"] }
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_header_parse"
|
||||
path = "fuzz_targets/fuzz_header_parse.rs"
|
||||
test = false
|
||||
doc = false
|
||||
|
||||
[[bin]]
|
||||
name = "fuzz_uri_parse"
|
||||
path = "fuzz_targets/fuzz_uri_parse.rs"
|
||||
test = false
|
||||
doc = false
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
#![no_main]
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
use actix_http::header::HeaderMap;
|
||||
use http::header::{HeaderName, HeaderValue};
|
||||
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
if data.len() < 2 { return; }
|
||||
let split = data[0] as usize % data.len().min(64);
|
||||
let (name, value) = if split < data.len() {
|
||||
(&data[..split.min(data.len())], &data[split.min(data.len())..])
|
||||
} else {
|
||||
(data, &[] as &[u8])
|
||||
};
|
||||
let _ = HeaderName::from_bytes(name).map(|n| {
|
||||
let _ = HeaderValue::from_bytes(value).map(|v| {
|
||||
let mut map = HeaderMap::new();
|
||||
map.insert(n, v);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#![no_main]
|
||||
use libfuzzer_sys::fuzz_target;
|
||||
use bytes::Bytes;
|
||||
use http::Uri;
|
||||
|
||||
fuzz_target!(|data: &[u8]| {
|
||||
let _ = Uri::from_maybe_shared(Bytes::copy_from_slice(data));
|
||||
});
|
||||
Loading…
Reference in New Issue