From e322e26b7e8c3dbfcba5c6142ca7559b63fc1652 Mon Sep 17 00:00:00 2001 From: Edward Barnard Date: Mon, 6 Mar 2017 21:07:19 +0000 Subject: Fuzz the binary and xml parsers separately. --- fuzz/Cargo.toml | 13 +++++++++++-- fuzz/fuzzers/binary_reader.rs | 4 +++- fuzz/fuzzers/xml_reader.rs | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 fuzz/fuzzers/xml_reader.rs diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index d1935db..b10e0d5 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -5,13 +5,22 @@ version = "0.0.1" authors = ["Automatically generated"] publish = false +[package.metadata] +cargo-fuzz = true + [dependencies.plist] path = ".." +[dependencies.libfuzzer-sys] +git = "https://github.com/rust-fuzz/libfuzzer-sys.git" # Prevent this from interfering with workspaces [workspace] members = ["."] [[bin]] -name = "fuzzer_script_1" -path = "fuzzers/fuzzer_script_1.rs" +name = "binary_reader" +path = "fuzzers/binary_reader.rs" + +[[bin]] +name = "xml_reader" +path = "fuzzers/xml_reader.rs" diff --git a/fuzz/fuzzers/binary_reader.rs b/fuzz/fuzzers/binary_reader.rs index 800ca21..4956694 100644 --- a/fuzz/fuzzers/binary_reader.rs +++ b/fuzz/fuzzers/binary_reader.rs @@ -4,9 +4,11 @@ extern crate plist; use std::io::Cursor; use plist::Plist; +use plist::binary::EventReader; #[export_name="rust_fuzzer_test_input"] pub extern fn go(data: &[u8]) { let cursor = Cursor::new(data); - let _ = Plist::read(cursor); + let reader = EventReader::new(cursor); + let _ = Plist::from_events(reader); } diff --git a/fuzz/fuzzers/xml_reader.rs b/fuzz/fuzzers/xml_reader.rs new file mode 100644 index 0000000..3901b25 --- /dev/null +++ b/fuzz/fuzzers/xml_reader.rs @@ -0,0 +1,14 @@ +#![no_main] +extern crate libfuzzer_sys; +extern crate plist; + +use std::io::Cursor; +use plist::Plist; +use plist::xml::EventReader; + +#[export_name="rust_fuzzer_test_input"] +pub extern fn go(data: &[u8]) { + let cursor = Cursor::new(data); + let reader = EventReader::new(cursor); + let _ = Plist::from_events(reader); +} \ No newline at end of file -- cgit v1.2.3