Skip to content

Run with mutagen on travis. #453

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 33 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
bbeadbc
Better document msg fuzz target behavior and be slightly more strict
TheBlueMatt Dec 27, 2019
b3dd229
Flatten OnionHopData struct with the Realm0 struct.
TheBlueMatt Dec 24, 2019
0b40b0c
Pull hmac out of OnionHopData.
TheBlueMatt Dec 26, 2019
32c245b
Move BogusHopData generation into test instead of OnionHopData.
TheBlueMatt Dec 26, 2019
9552082
Add a ChaChaReader adapter to read an encrypted stream & use it
TheBlueMatt Dec 27, 2019
12c7eba
Add macros for building TLV (de)serializers.
TheBlueMatt Dec 27, 2019
e7ce124
Add support for variable-length onion payload reads using TLV
TheBlueMatt Dec 27, 2019
b341d68
Use RouteHop's new node_features to send TLV-encoded onion hops
TheBlueMatt Dec 28, 2019
4cde6f4
Add a helper struct to allow a user to safely pass in an addr list
TheBlueMatt Jan 3, 2020
6883f9d
Allow node_announcement timestamps of 0 in accordance with BOLT 7
TheBlueMatt Jan 3, 2020
06d2a07
Add ability to broadcast our own node_announcement.
TheBlueMatt Jan 3, 2020
7d68813
Avoid treating option_upfront_shutdown (req) as unknown_required.
TheBlueMatt Jan 7, 2020
e36d78c
Add some basic sanity tests for feature flags
TheBlueMatt Jan 7, 2020
9cfc6e9
Clarify the in-flight HTLC state-tracking structs a bit.
TheBlueMatt Jan 1, 2020
ae3c878
Split only-receive/forward data out of PendingHTLCInfo into an enum
TheBlueMatt Jan 1, 2020
8e82808
Support (de)serializing payment_data in onion TLVs and track them
TheBlueMatt Jan 2, 2020
5894543
Refuse to deserialize OnionHopDatas with values > 21 million
TheBlueMatt Jan 2, 2020
f24c725
Impl Base AMP in the receive pipeline and expose payment_secret
TheBlueMatt Jan 2, 2020
4c4d221
Add/announce features for payment_secret and basic_mpp
TheBlueMatt Jan 15, 2020
2274482
Expand the Route object to include multiple paths.
TheBlueMatt Jan 4, 2020
4bc2b67
Implement multipath sends using payment_secret.
TheBlueMatt Jan 7, 2020
f7ef025
Refactor test utils and add a simple MPP send/claim test.
TheBlueMatt Jan 7, 2020
87372e9
Time out incoming HTLCs when we reach cltv_expiry (+ test)
TheBlueMatt Jan 9, 2020
35350bc
Time out AwatingRemoteRAA outgoing HTLCs when we reach cltv_expiry
Dec 8, 2018
367602f
Test basic AMP payments in chanmon_consistency
TheBlueMatt Jan 10, 2020
87091f0
Fix EnforcingChannelKeys panic when our counterparty burns their $.
TheBlueMatt Jan 12, 2020
1ed82b0
Test that EnforcingChannelKeys doesn't panic on duplicate RAAs
TheBlueMatt Jan 16, 2020
baab176
Fix deadlock in handle_error!() when we have HTLCs to fail-back.
TheBlueMatt Jan 13, 2020
e6719f1
Only expose constants exposed for testing in cfg(test)
TheBlueMatt Jan 17, 2020
739badf
Silence new rustc warnings re: extra ()s, dyn, and unused params
TheBlueMatt Jan 16, 2020
b8dbf27
Drop individual fuzz target duplicate_crash tests for file reader
TheBlueMatt Jan 19, 2020
d5e93c6
Panic on txn with value > 21mill in ChannelMonitor::block_connected
TheBlueMatt Jan 19, 2020
f2f7e70
Run with mutagen on travis.
TheBlueMatt Jan 15, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
language: rust
rust:
- stable
- beta
- nightly
- 1.22.0
- 1.34.2
cache: cargo
Expand All @@ -22,6 +22,14 @@ script:
- if [ "$(rustup show | grep default | grep 1.22.0)" != "" ]; then RUSTFLAGS="-C link-dead-code" cargo test --verbose -p lightning; fi
# Run lightning workspace fuzz tests for Rust 1.34.2
- if [ "$(rustup show | grep default | grep 1.34.2)" != "" ]; then cd fuzz && cargo test --verbose && ./travis-fuzz.sh; fi
# Run mutagen on nightly with TheBlueMatt's fork which exits with non-0 status
# if any mutations resulted in anything except test failures to prevent regressions.
- if [ "$(rustup show | grep default | grep nightly)" != "" ]; then
rm -rf mutagen && git clone https://github.com/TheBlueMatt/mutagen &&
cargo install --force --path mutagen/mutagen-runner &&
cd lightning &&
~/.cargo/bin/cargo-mutagen --features mutation_testing; fi
# Generate codecov on stable
- if [ "$(rustup show | grep default | grep stable)" != "" ]; then
wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz &&
tar xzf master.tar.gz &&
Expand Down
19 changes: 17 additions & 2 deletions fuzz/src/bin/chanmon_consistency_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::chanmon_consistency::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
chanmon_consistency_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
chanmon_consistency_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/chanmon_consistency") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
chanmon_consistency_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/chanmon_deser_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::chanmon_deser::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
chanmon_deser_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
chanmon_deser_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/chanmon_deser") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
chanmon_deser_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/full_stack_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::full_stack::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
full_stack_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
full_stack_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/full_stack") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
full_stack_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_accept_channel_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_accept_channel::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_accept_channel_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_accept_channel_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_accept_channel") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_accept_channel_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_announcement_signatures_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_announcement_signatures::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_announcement_signatures_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_announcement_signatures_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_announcement_signatures") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_announcement_signatures_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_channel_announcement_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_channel_announcement::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_channel_announcement_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_channel_announcement_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_channel_announcement") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_channel_announcement_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_channel_reestablish_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_channel_reestablish::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_channel_reestablish_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_channel_reestablish_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_channel_reestablish") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_channel_reestablish_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_channel_update_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_channel_update::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_channel_update_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_channel_update_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_channel_update") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_channel_update_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_closing_signed_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_closing_signed::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_closing_signed_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_closing_signed_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_closing_signed") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_closing_signed_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_commitment_signed_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_commitment_signed::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_commitment_signed_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_commitment_signed_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_commitment_signed") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_commitment_signed_run(data.as_ptr(), data.len());
}
}
}
19 changes: 17 additions & 2 deletions fuzz/src/bin/msg_decoded_onion_error_packet_target.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// This file is auto-generated by gen_target.sh based on target_template.txt
// To modify it, modify target_template.txt and run gen_target.sh instead.

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

extern crate lightning_fuzz;
use lightning_fuzz::msg_targets::msg_decoded_onion_error_packet::*;

use std::fs;
use std::io::Read;

#[cfg(feature = "afl")]
Expand Down Expand Up @@ -42,3 +42,18 @@ fn main() {
std::io::stdin().read_to_end(&mut data).unwrap();
msg_decoded_onion_error_packet_run(data.as_ptr(), data.len());
}

#[test]
fn run_test_cases() {
let mut data: Vec<u8> = vec![0];
msg_decoded_onion_error_packet_run(data.as_ptr(), data.len());
if let Ok(tests) = fs::read_dir("test_cases/msg_decoded_onion_error_packet") {
for test in tests {
data.clear();
let path = test.unwrap().path();
println!("Running test {}...", path.file_name().unwrap().to_str().unwrap());
fs::File::open(path).unwrap().read_to_end(&mut data).unwrap();
msg_decoded_onion_error_packet_run(data.as_ptr(), data.len());
}
}
}
Loading