Skip to content

Commit a343cf9

Browse files
committed
Drop individual fuzz target duplicate_crash tests for file reader
Previously, in each of our fuzz tests we had a dummy test which had a hard-coded hex string which it passed into the fuzz target so that when a failing test case was found, its hex could be copied into the test and you could run cargo test to analyze the failure. However, this was somewhat unwieldy as converting large tests back and forth between hex and raw files is quite annoying. Instead, we replace each of those tests with a test in each target that looks for files in fuzz/test_cases and runs each file it finds. Since we're editing every bin target anyway, we also automate adding no_main to libfuzzer builds with #![cfg_attr].
1 parent 0b5b282 commit a343cf9

File tree

62 files changed

+527
-308
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+527
-308
lines changed

fuzz/src/bin/chanmon_consistency_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::chanmon_consistency::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
chanmon_consistency_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
chanmon_consistency_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/chanmon_consistency") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
chanmon_consistency_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/chanmon_deser_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::chanmon_deser::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
chanmon_deser_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
chanmon_deser_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/chanmon_deser") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
chanmon_deser_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/full_stack_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::full_stack::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
full_stack_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
full_stack_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/full_stack") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
full_stack_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_accept_channel_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_accept_channel::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_accept_channel_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_accept_channel_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_accept_channel") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_accept_channel_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_announcement_signatures_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_announcement_signatures::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_announcement_signatures_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_announcement_signatures_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_announcement_signatures") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_announcement_signatures_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_channel_announcement_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_channel_announcement::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_channel_announcement_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_channel_announcement_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_channel_announcement") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_channel_announcement_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_channel_reestablish_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_channel_reestablish::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_channel_reestablish_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_channel_reestablish_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_channel_reestablish") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_channel_reestablish_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_channel_update_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_channel_update::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_channel_update_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_channel_update_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_channel_update") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_channel_update_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_closing_signed_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_closing_signed::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_closing_signed_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_closing_signed_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_closing_signed") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_closing_signed_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_commitment_signed_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_commitment_signed::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_commitment_signed_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_commitment_signed_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_commitment_signed") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_commitment_signed_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

fuzz/src/bin/msg_decoded_onion_error_packet_target.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// This file is auto-generated by gen_target.sh based on target_template.txt
22
// To modify it, modify target_template.txt and run gen_target.sh instead.
33

4-
//Uncomment this for libfuzzer builds:
5-
//#![no_main]
4+
#![cfg_attr(feature = "libfuzzer_fuzz", no_main)]
65

76
extern crate lightning_fuzz;
87
use lightning_fuzz::msg_targets::msg_decoded_onion_error_packet::*;
98

9+
use std::fs;
1010
use std::io::Read;
1111

1212
#[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
4242
std::io::stdin().read_to_end(&mut data).unwrap();
4343
msg_decoded_onion_error_packet_run(data.as_ptr(), data.len());
4444
}
45+
46+
#[test]
47+
fn run_test_cases() {
48+
let mut data: Vec<u8> = vec![0];
49+
msg_decoded_onion_error_packet_run(data.as_ptr(), data.len());
50+
if let Ok(tests) = fs::read_dir("test_cases/msg_decoded_onion_error_packet") {
51+
for test in tests {
52+
data.clear();
53+
let path = test.unwrap().path();
54+
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
55+
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
56+
msg_decoded_onion_error_packet_run(data.as_ptr(), data.len());
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)