fuzz: Add zkas Lexer fuzzer.

This commit is contained in:
parazyd
2023-08-23 23:54:33 +02:00
parent 576a20e057
commit fe215e632c
4 changed files with 62 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ libfuzzer-sys = "0.4"
[dependencies.darkfi]
path = ".."
features = ["zkas"]
[dependencies.darkfi-serial]
path = "../src/serial"
@@ -29,3 +30,9 @@ name = "serial"
path = "fuzz_targets/serial.rs"
test = false
doc = false
[[bin]]
name = "zkas-lexer"
path = "fuzz_targets/zkas_lexer.rs"
test = false
doc = false

View File

@@ -1,3 +1,21 @@
/* This file is part of DarkFi (https://dark.fi)
*
* Copyright (C) 2020-2023 Dyne.org foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#![no_main]
extern crate darkfi_serial;
use darkfi_serial::{deserialize, serialize};

View File

@@ -0,0 +1,33 @@
/* This file is part of DarkFi (https://dark.fi)
*
* Copyright (C) 2020-2023 Dyne.org foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#![no_main]
use libfuzzer_sys::fuzz_target;
use darkfi::zkas::Lexer;
// Run with: ZKAS_SILENT=1 cargo fuzz run zkas-lexer
fuzz_target!(|data: &[u8]| {
if let Ok(source) = std::str::from_utf8(data) {
let filename = "fuzz0r";
let source = source.replace('\t', " ").replace("\r\n", "\n");
let lexer = Lexer::new(filename, source.chars());
let _ = lexer.lex();
}
});