Rocket/core/lib/fuzz/targets/uri-roundtrip.rs

22 lines
776 B
Rust

#![no_main]
use rocket::http::uri::*;
use libfuzzer_sys::fuzz_target;
fn fuzz(data: &str) {
if let Ok(uri) = Uri::parse_any(data) {
let string = uri.to_string();
let _ = match uri {
Uri::Asterisk(_) => Asterisk::parse_owned(string).expect("Asterisk").to_string(),
Uri::Origin(_) => Origin::parse_owned(string).expect("Origin").to_string(),
Uri::Authority(_) => Authority::parse_owned(string).expect("Authority").to_string(),
Uri::Absolute(_) => Absolute::parse_owned(string).expect("Absolute").to_string(),
Uri::Reference(_) => Reference::parse_owned(string).expect("Reference").to_string(),
};
}
}
fuzz_target!(|data: &[u8]| {
let _ = std::str::from_utf8(data).map(fuzz);
});