Merge pull request #454 from TheBlueMatt/2020-01-fuzz-mega-value
authorMatt Corallo <649246+TheBlueMatt@users.noreply.github.com>
Wed, 5 Feb 2020 01:23:44 +0000 (01:23 +0000)
committerGitHub <noreply@github.com>
Wed, 5 Feb 2020 01:23:44 +0000 (01:23 +0000)
Panic on txn with value > 21mill in ChannelMonitor::block_connected, Clean up fuzz targets a bit

63 files changed:
fuzz/src/bin/chanmon_consistency_target.rs
fuzz/src/bin/chanmon_deser_target.rs
fuzz/src/bin/full_stack_target.rs
fuzz/src/bin/msg_accept_channel_target.rs
fuzz/src/bin/msg_announcement_signatures_target.rs
fuzz/src/bin/msg_channel_announcement_target.rs
fuzz/src/bin/msg_channel_reestablish_target.rs
fuzz/src/bin/msg_channel_update_target.rs
fuzz/src/bin/msg_closing_signed_target.rs
fuzz/src/bin/msg_commitment_signed_target.rs
fuzz/src/bin/msg_decoded_onion_error_packet_target.rs
fuzz/src/bin/msg_error_message_target.rs
fuzz/src/bin/msg_funding_created_target.rs
fuzz/src/bin/msg_funding_locked_target.rs
fuzz/src/bin/msg_funding_signed_target.rs
fuzz/src/bin/msg_init_target.rs
fuzz/src/bin/msg_node_announcement_target.rs
fuzz/src/bin/msg_onion_hop_data_target.rs
fuzz/src/bin/msg_open_channel_target.rs
fuzz/src/bin/msg_ping_target.rs
fuzz/src/bin/msg_pong_target.rs
fuzz/src/bin/msg_revoke_and_ack_target.rs
fuzz/src/bin/msg_shutdown_target.rs
fuzz/src/bin/msg_update_add_htlc_target.rs
fuzz/src/bin/msg_update_fail_htlc_target.rs
fuzz/src/bin/msg_update_fail_malformed_htlc_target.rs
fuzz/src/bin/msg_update_fee_target.rs
fuzz/src/bin/msg_update_fulfill_htlc_target.rs
fuzz/src/bin/peer_crypt_target.rs
fuzz/src/bin/router_target.rs
fuzz/src/bin/target_template.txt
fuzz/src/chanmon_consistency.rs
fuzz/src/chanmon_deser.rs
fuzz/src/full_stack.rs
fuzz/src/msg_targets/msg_accept_channel.rs
fuzz/src/msg_targets/msg_announcement_signatures.rs
fuzz/src/msg_targets/msg_channel_announcement.rs
fuzz/src/msg_targets/msg_channel_reestablish.rs
fuzz/src/msg_targets/msg_channel_update.rs
fuzz/src/msg_targets/msg_closing_signed.rs
fuzz/src/msg_targets/msg_commitment_signed.rs
fuzz/src/msg_targets/msg_decoded_onion_error_packet.rs
fuzz/src/msg_targets/msg_error_message.rs
fuzz/src/msg_targets/msg_funding_created.rs
fuzz/src/msg_targets/msg_funding_locked.rs
fuzz/src/msg_targets/msg_funding_signed.rs
fuzz/src/msg_targets/msg_init.rs
fuzz/src/msg_targets/msg_node_announcement.rs
fuzz/src/msg_targets/msg_onion_hop_data.rs
fuzz/src/msg_targets/msg_open_channel.rs
fuzz/src/msg_targets/msg_ping.rs
fuzz/src/msg_targets/msg_pong.rs
fuzz/src/msg_targets/msg_revoke_and_ack.rs
fuzz/src/msg_targets/msg_shutdown.rs
fuzz/src/msg_targets/msg_target_template.txt
fuzz/src/msg_targets/msg_update_add_htlc.rs
fuzz/src/msg_targets/msg_update_fail_htlc.rs
fuzz/src/msg_targets/msg_update_fail_malformed_htlc.rs
fuzz/src/msg_targets/msg_update_fee.rs
fuzz/src/msg_targets/msg_update_fulfill_htlc.rs
fuzz/src/peer_crypt.rs
fuzz/src/router.rs
lightning/src/ln/channelmonitor.rs

index a4a0bf23b3e98133ebe77d052ef8bc441fd60292..a6d3ff061abe615761f9747036ac32db669fd25b 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 91bc66c19bfde5c994892f677633c8f8bb254dc0..91d5f1e113d67029fec1b5eaa0426054e0e6db55 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 4dbf0cc91583fc8f83b02e08b549de0cf283b142..955202d24ebb0a8adc4dafd272ae66c352d3f34f 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index c235601108e8af7e203b460b14868c78db476c60..8112ebf947c59b006ef7272c2a7b5c30b9ef8d4a 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 54f3d823ddd84704cd99d3b016281fde098d4db4..f234dadfda7dbcb040cf816fabb37591a7a0cd50 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 5ab797f6749b6317e8926748d7635ae92739510e..a2a63643f15ed813f90c6dc8fd57a4e6acbb57f5 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 79b23e409dcd280ab020754ebfe8ca6aee64daf0..908d20676329df58e8536a73b6c3ec1b32e0cffe 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index f9dffda2dc120efdc2f6fd452a3a31a47b86b8c2..6eb7ba190c440169e2911f7b50fcb66a2ed701b6 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index eee7145c7893c839ebebee43370ccaa5755cc00e..3377ffd6afb3ee38bdf307f22d6f9aa654eca7ac 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 6ce13f47b3beda82a2c7e473dc22629dee4f99db..a9cef5fe25a903b8c422f8ba2ccb068fb89699ad 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index c5c9d4a5399be2955474c9d06fb0d6108f68c480..cefcf06bd60ffc1ef39de43ce85f8118e4dbabee 100644 (file)
@@ -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")]
@@ -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());
+               }
+       }
+}
index 1fa04d9612893110c7df9437a4a1e1bdc9bd9f38..c8706d21a5ae7dfcbef16f07d3db329864f9a824 100644 (file)
@@ -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_error_message::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_error_message_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_error_message_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_error_message") {
+               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_error_message_run(data.as_ptr(), data.len());
+               }
+       }
+}
index e9fedc3ce8c8f8fb39be7fd698fec6aec2d1e957..f51caf57e7e913175b7021eca2bed2ae44a0d007 100644 (file)
@@ -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_funding_created::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_funding_created_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_funding_created_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_funding_created") {
+               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_funding_created_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 3665ce99520178d38fd160d7c02ce8c86d99e4a9..14954096a119450265135c8b3c976a569b0dc3a4 100644 (file)
@@ -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_funding_locked::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_funding_locked_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_funding_locked_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_funding_locked") {
+               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_funding_locked_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 057cc6fe6a22d7dd566909a21ef57bcc8777e5b2..dcd5dd9d9c7228976ea0a25b3ab6e1979b41e0cc 100644 (file)
@@ -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_funding_signed::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_funding_signed_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_funding_signed_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_funding_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_funding_signed_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 0bcbeda108e202194e37f4722e3a28f6a484530b..4dd75f2e3412a6e957e691cdfc15665f57260040 100644 (file)
@@ -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_init::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_init_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_init_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_init") {
+               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_init_run(data.as_ptr(), data.len());
+               }
+       }
+}
index e3dde9fb62f73ea884d72c5abc33a4f632489e0a..ae778b679d74c2a0f7a60ffae89771b8e37a80eb 100644 (file)
@@ -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_node_announcement::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_node_announcement_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_node_announcement_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_node_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_node_announcement_run(data.as_ptr(), data.len());
+               }
+       }
+}
index ea2b6e4d416c86e3cb37c95fb15912f6cee1a63d..95453bc954a05873e6fe6e1b9c8d28d4d73e63a5 100644 (file)
@@ -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_onion_hop_data::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_onion_hop_data_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_onion_hop_data_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_onion_hop_data") {
+               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_onion_hop_data_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 690db561e94964888577cd1d890a2e673988a736..fa385e564586b12368c42c5f5be5c936c5e6515c 100644 (file)
@@ -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_open_channel::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_open_channel_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_open_channel_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_open_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_open_channel_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 871c8e147aabddcb0b8e19b210db71cf7eae9ddc..e8b0a5983aa3b445abc4fc2ca3c8520e02fcab63 100644 (file)
@@ -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_ping::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_ping_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_ping_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_ping") {
+               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_ping_run(data.as_ptr(), data.len());
+               }
+       }
+}
index c4fc46167a43a0cf1d49ce3d31b88a368edddc3b..f7408ec52f297dd795b3aebd7083854bf7c04a47 100644 (file)
@@ -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_pong::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_pong_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_pong_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_pong") {
+               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_pong_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 2c844c2aa30d135527619030b2cb84eca5828a19..47f125a44af46b7d2b74cd0e843cfae566248dc8 100644 (file)
@@ -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_revoke_and_ack::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_revoke_and_ack_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_revoke_and_ack_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_revoke_and_ack") {
+               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_revoke_and_ack_run(data.as_ptr(), data.len());
+               }
+       }
+}
index ea1678ce20683ee1d723a2802c5798415a4a6971..fb400f7730ea2e02de5bcc8a636ee069f41c90a5 100644 (file)
@@ -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_shutdown::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_shutdown_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_shutdown_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_shutdown") {
+               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_shutdown_run(data.as_ptr(), data.len());
+               }
+       }
+}
index cc8f67306a28c7b1944fd3abf2fc6bcbcc044a64..e433a4468f0ac17aa339d5fb80827c04ca417532 100644 (file)
@@ -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_update_add_htlc::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_update_add_htlc_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_update_add_htlc_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_update_add_htlc") {
+               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_update_add_htlc_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 5099fed190acc1e422b290c84156d58c173bd4b9..ee8bb3af1726ed0d9d5c384e204dbc8686364d47 100644 (file)
@@ -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_update_fail_htlc::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_update_fail_htlc_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_update_fail_htlc_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_update_fail_htlc") {
+               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_update_fail_htlc_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 9eea92797b79c5d15c4c2f28dd7b17c093c72663..06eb31d32a789493d1380b077a0f5b0a927d3430 100644 (file)
@@ -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_update_fail_malformed_htlc::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_update_fail_malformed_htlc_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_update_fail_malformed_htlc_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_update_fail_malformed_htlc") {
+               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_update_fail_malformed_htlc_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 50a96aa0be1cf629c17b5407aaf1e29f24a3db33..12e5c384f555277830cee5fa6ff89511c7917480 100644 (file)
@@ -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_update_fee::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_update_fee_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_update_fee_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_update_fee") {
+               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_update_fee_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 35bf38e9a192b4a509a4253e6d9081ef973a57e4..a5a8bda338aacc871e8b663d4a973ab2ea0a9380 100644 (file)
@@ -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_update_fulfill_htlc::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        msg_update_fulfill_htlc_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       msg_update_fulfill_htlc_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/msg_update_fulfill_htlc") {
+               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_update_fulfill_htlc_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 8c1f7b018cf5864f379362e5a063fd4a39ebe554..b32854f051e25ddab9e88aa267d35353c4c65533 100644 (file)
@@ -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::peer_crypt::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        peer_crypt_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       peer_crypt_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/peer_crypt") {
+               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();
+                       peer_crypt_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 9b26a176bfac82af6a2504dde3dd24ca8fe497fb..3e82b196a46415f2955402b326cf42d6571bf58a 100644 (file)
@@ -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::router::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        router_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       router_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/router") {
+               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();
+                       router_run(data.as_ptr(), data.len());
+               }
+       }
+}
index 3ebb480df6970e0dff08484ac9ef3d4b40ac2c8d..9815e9ccc29c50b62e9af900fb631bece38332fc 100644 (file)
@@ -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::TARGET_MOD::*;
 
+use std::fs;
 use std::io::Read;
 
 #[cfg(feature = "afl")]
@@ -42,3 +42,18 @@ fn main() {
        std::io::stdin().read_to_end(&mut data).unwrap();
        TARGET_NAME_run(data.as_ptr(), data.len());
 }
+
+#[test]
+fn run_test_cases() {
+       let mut data: Vec<u8> = vec![0];
+       TARGET_NAME_run(data.as_ptr(), data.len());
+       if let Ok(tests) = fs::read_dir("test_cases/TARGET_NAME") {
+               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();
+                       TARGET_NAME_run(data.as_ptr(), data.len());
+               }
+       }
+}
index b961b23ac15134d48d55cdea881683467321a312..cd22dc59f31ac0927ab623d22c3737c6e7fbd2e9 100644 (file)
@@ -750,11 +750,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn chanmon_consistency_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index dbd30266080627fa45fe89224e61ee5148424056..c9042dd41dd089f0e28180731c5f7df12abe83bf 100644 (file)
@@ -41,11 +41,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn chanmon_deser_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 36e6d73186773d8afd24920cdd3582aa379353c5..568f8085131d259282cb164fbb6c7cb0fc882d06 100644 (file)
@@ -491,6 +491,12 @@ pub fn do_test(data: &[u8], logger: &Arc<dyn Logger>) {
                                } else {
                                        let txres: Result<Transaction, _> = deserialize(get_slice!(txlen));
                                        if let Ok(tx) = txres {
+                                               let mut output_val = 0;
+                                               for out in tx.output.iter() {
+                                                       if out.value > 21_000_000_0000_0000 { return; }
+                                                       output_val += out.value;
+                                                       if output_val > 21_000_000_0000_0000 { return; }
+                                               }
                                                loss_detector.connect_block(&[tx]);
                                        } else {
                                                return;
@@ -546,12 +552,6 @@ mod tests {
        use std::collections::HashMap;
        use std::sync::{Arc, Mutex};
 
-       #[test]
-       fn duplicate_crash() {
-               let logger: Arc<dyn Logger> = Arc::new(test_logger::TestLogger::new("".to_owned()));
-               super::do_test(&::hex::decode("00").unwrap(), &logger);
-       }
-
        struct TrackingLogger {
                /// (module, message) -> count
                pub lines: Mutex<HashMap<(String, String), usize>>,
index 04e3cc245339b560b83feb0300efafdd9b54accb..94baec595e0a1b9891c959483a742d78751fcb70 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_accept_channel_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 1df6aeca31bfdab704c3909b3bc27b853434edeb..065295b9e12a9f17d2bff2afbf81009b672214ae 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_announcement_signatures_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 9e2363eab47588e903f4790f8e137e07006db938..dafcdafed8278ba20af488e757b17bc1354ae2c6 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_channel_announcement_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index a81f0aebfc61eb9c8823a58b3f9187947757969d..8d05450e7e5444551993b8014147ecec3a14a438 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_channel_reestablish_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index aaef33ea2c0047ed8c3117c259166e24d1647608..0d3edfe88553b38b6288f18cc017e2a9e6de77d7 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_channel_update_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 9a959d58cc309ba907229b45ae4aa87006656d14..8043d9de083853fc1c70145e2df2c8908c68962f 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_closing_signed_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index e84c987148f6de4fe077fdd0bd5b562a2cc7275e..319f46c597706fbddf061e8233c696dfdd49aa50 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_commitment_signed_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index e49d22b3a1a12bf35fc6a88f6b63d7b7b5a8757b..d6e5a829d1f9bed2dd552241e0d6547f75fa7fc9 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_decoded_onion_error_packet_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 6b5bcccf27bfc4bc8c092ea941c4e8dbb36086f2..16594953eb8ef90ff14301867c4e9a3ecd0663a7 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_error_message_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 8e468a85aca5696b7db2168a4a07f66d56884269..cc322cbb09801487faeb587d358d0b652534fd65 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_funding_created_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 29e9c8a6ab6c722fb4451de8fdb9de19ecb47ce0..a546ed8bb604daf976faf499f56c498c9d0710db 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_funding_locked_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 412558fe99470b43f4d80742ec3f2082a90d43cf..0210b5ec61f954c0f42da199d7d0a23a76226706 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_funding_signed_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index dbc0745857236ddb391b787e7e200c8281500c62..52b92acd01931a581de44990c4d25466adca4cc9 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_init_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 95de73ba7446e6b4a95349bc40824d63121da662..bb09f87e7f97d3e7c59ada698a3fae917088e5de 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_node_announcement_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 0b02302ad5f341f44debebde269a739940f33e27..e446a063bd9df18bc52c268b57e15c138a6ac6f9 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_onion_hop_data_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 2688b41819c980f9f5b04e9ab6e96f665b8e0f75..9c700c2b2e44e9b49fd55742e208c69da87a2b83 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_open_channel_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 21b74ad9f2817551a6b449e0c1d1ea5419c54fc9..67e2382f09d3bdb28ab3421a988bb6df9b02ee5c 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_ping_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index c8fc4c59d4a6db97cc1592f43df6ce2a167ee4ef..cec5c5adf68b9e2be02cf1856c4ad6726204a290 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_pong_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index ca5412f5c1dff0d0633014a0e7770bf1010b5f41..6df64e3e4d2ea36c7ed4262e5a86971bbe9018b3 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_revoke_and_ack_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index c249ffcecce8619629cf940ee61712694a0640a0..d70d9a6a7b5ce8add19332edf9426597aecb2f01 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_shutdown_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 6877918a5f6fb7d923f6b12e8b9eb2ba7abb186b..ea785ff4ef314073a6e4e7baff428793abaa9c31 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn TARGET_NAME_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 960399abb74e43cc7df59829d90809c112cdd809..13b648f0af57a6ee0f7f825dad125f22f3310d1b 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_update_add_htlc_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 8eb2870d36684586c44d8499b3ade0423fffd8df..e21d2146c4ae9db337cb1b8f05a8ca62f7658e88 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_update_fail_htlc_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 4d1ab282f5c9ef59f1f9e32c1a8a2c167573da30..e27b85281902d35082748166274c0b75ec620ff1 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_update_fail_malformed_htlc_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 8d3bb89415fef1c478d01943a83b3f70622c7b3f..5051bb87d7cac2a26e986b31935870097198734e 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_update_fee_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index ab7277084051656d31922f091e9d087d0df2461d..b8b3d98a92c05a20d41a3c1b3edaca2e0552e95d 100644 (file)
@@ -14,11 +14,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn msg_update_fulfill_htlc_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 8e61644644ec4a474f3e6c76184c0cd7a7f36967..e0ff02f04ccc341a219cc9a90bf308a349224591 100644 (file)
@@ -79,11 +79,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn peer_crypt_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("01").unwrap());
-       }
-}
index fbb629220112a63f543135c1be2537908c6ad017..434e1b657d135de9d49dffdf1a7d83c4be2d2cc5 100644 (file)
@@ -237,11 +237,3 @@ pub fn do_test(data: &[u8]) {
 pub extern "C" fn router_run(data: *const u8, datalen: usize) {
        do_test(unsafe { std::slice::from_raw_parts(data, datalen) });
 }
-
-#[cfg(test)]
-mod tests {
-       #[test]
-       fn duplicate_crash() {
-               super::do_test(&::hex::decode("00").unwrap());
-       }
-}
index 0a70eb0e676bb34d84e521d92524664530a6243e..51446ccc57162d80fb1a1f56472959ddaa97d803 100644 (file)
@@ -2363,6 +2363,15 @@ impl<ChanSigner: ChannelKeys> ChannelMonitor<ChanSigner> {
        }
 
        fn block_connected(&mut self, txn_matched: &[&Transaction], height: u32, block_hash: &Sha256dHash, broadcaster: &BroadcasterInterface, fee_estimator: &FeeEstimator)-> (Vec<(Sha256dHash, Vec<TxOut>)>, Vec<SpendableOutputDescriptor>, Vec<(HTLCSource, Option<PaymentPreimage>, PaymentHash)>) {
+               for tx in txn_matched {
+                       let mut output_val = 0;
+                       for out in tx.output.iter() {
+                               if out.value > 21_000_000_0000_0000 { panic!("Value-overflowing transaction provided to block connected"); }
+                               output_val += out.value;
+                               if output_val > 21_000_000_0000_0000 { panic!("Value-overflowing transaction provided to block connected"); }
+                       }
+               }
+
                log_trace!(self, "Block {} at height {} connected with {} txn matched", block_hash, height, txn_matched.len());
                let mut watch_outputs = Vec::new();
                let mut spendable_outputs = Vec::new();