From 82ccae4d89db427a83fb4fef57fc6bbd40ac10d2 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Mon, 20 Feb 2017 23:59:00 -0800 Subject: [PATCH] Add fuzz scripts --- fuzz/.gitignore | 3 +++ fuzz/Cargo.toml | 15 +++++++++++++++ fuzz/fuzzers/parse.rs | 16 ++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 fuzz/.gitignore create mode 100644 fuzz/Cargo.toml create mode 100644 fuzz/fuzzers/parse.rs diff --git a/fuzz/.gitignore b/fuzz/.gitignore new file mode 100644 index 00000000..08ba2bbe --- /dev/null +++ b/fuzz/.gitignore @@ -0,0 +1,3 @@ + +target +libfuzzer diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml new file mode 100644 index 00000000..0443d5ed --- /dev/null +++ b/fuzz/Cargo.toml @@ -0,0 +1,15 @@ + +[package] +name = "url-fuzz" +version = "0.0.1" +authors = ["Automatically generated"] + +[dependencies.url] +path = ".." + +[[bin]] +name = "parse" +path = "fuzzers/parse.rs" + +[workspace] +members = ["."] diff --git a/fuzz/fuzzers/parse.rs b/fuzz/fuzzers/parse.rs new file mode 100644 index 00000000..8f02b885 --- /dev/null +++ b/fuzz/fuzzers/parse.rs @@ -0,0 +1,16 @@ +#![no_main] + +extern crate fuzzer_sys; + +extern crate url; +use std::slice; +use std::str; + +#[export_name="LLVMFuzzerTestOneInput"] +pub extern fn go(data: *const u8, size: isize) -> i32 { + let slice = unsafe { slice::from_raw_parts(data, size as usize) }; + if let Ok(utf8) = str::from_utf8(slice) { + let url = url::Url::parse(utf8); + } + return 0; +}