Skip to content

Commit

Permalink
Added a fuzzer as integration to OSS-Fuzz. (chronotope#463)
Browse files Browse the repository at this point in the history
* Added a fuzzer.

* Added a README for the fuzzer set up.
  • Loading branch information
DavidKorczynski authored Jul 27, 2020
1 parent 8d66a68 commit 370a20c
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 0 deletions.
4 changes: 4 additions & 0 deletions fuzz/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

target
corpus
artifacts
24 changes: 24 additions & 0 deletions fuzz/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@

[package]
name = "chrono-fuzz"
version = "0.0.0"
authors = ["David Korczynski <[email protected]>"]
publish = false
edition = "2018"

[package.metadata]
cargo-fuzz = true

[dependencies]
libfuzzer-sys = "0.3"

[dependencies.chrono]
path = ".."

# Prevent this from interfering with workspaces
[workspace]
members = ["."]

[[bin]]
name = "fuzz_reader"
path = "fuzz_targets/fuzz_reader.rs"
12 changes: 12 additions & 0 deletions fuzz/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Fuzzing Chrono
To fuzz Chrono we rely on the [Cargo-fuzz](https://rust-fuzz.github.io/) project.

To install cargo-fuzz:
```
cargo install cargo-fuzz
```

To run the Chrono fuzzer, navigate to the top directory of chrono and issue the following command:
```
cargo-fuzz run fuzz_reader
```
10 changes: 10 additions & 0 deletions fuzz/fuzz_targets/fuzz_reader.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#![no_main]
use libfuzzer_sys::fuzz_target;

fuzz_target!(|data: &[u8]| {
use chrono::prelude::*;
if let Ok(data) = std::str::from_utf8(data) {
let _ = DateTime::parse_from_rfc2822(data);
let _ = DateTime::parse_from_rfc3339(data);
}
});

0 comments on commit 370a20c

Please sign in to comment.