feat: add rudimentary fuzzer for specctra-core DSN parser

Fixes #110
This commit is contained in:
Alain Emilia Anna Zscheile 2024-12-05 19:51:55 +01:00
parent 0fe23c9c71
commit 0b37bb2dbc
4 changed files with 39 additions and 1 deletions

View File

@ -1,5 +1,5 @@
[workspace] [workspace]
members = [".", "crates/*"] members = [".", "crates/*", "crates/*/fuzz"]
resolver = "2" resolver = "2"
[workspace.dependencies] [workspace.dependencies]

4
crates/specctra-core/fuzz/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
target
corpus
artifacts
coverage

View File

@ -0,0 +1,21 @@
[package]
name = "specctra-core-fuzz"
version = "0.0.0"
publish = false
edition = "2021"
[package.metadata]
cargo-fuzz = true
[dependencies]
libfuzzer-sys = "0.4"
[dependencies.specctra-core]
path = ".."
[[bin]]
name = "fuzz_target_1"
path = "fuzz_targets/fuzz_target_1.rs"
test = false
doc = false
bench = false

View File

@ -0,0 +1,13 @@
#![no_main]
use libfuzzer_sys::fuzz_target;
fuzz_target!(|data: &str| {
let mut cursor = std::io::Cursor::new(data);
use specctra_core::{read::ListTokenizer, structure::DsnFile};
let mut tkz = ListTokenizer::new(cursor);
let _: Result<_, _> = tkz.read_value::<DsnFile>();
});