From e2ff3393ea7b95432a0e13f69f423028682e15bb Mon Sep 17 00:00:00 2001 From: Yuntai Kyong Date: Sun, 13 May 2018 05:09:46 +0900 Subject: [PATCH] add script to generate msg test target --- fuzz/fuzz_targets/msg_targets/gen_target.sh | 5 ++ .../msg_targets/msg_target_template.txt | 49 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 fuzz/fuzz_targets/msg_targets/gen_target.sh create mode 100644 fuzz/fuzz_targets/msg_targets/msg_target_template.txt diff --git a/fuzz/fuzz_targets/msg_targets/gen_target.sh b/fuzz/fuzz_targets/msg_targets/gen_target.sh new file mode 100644 index 000000000..6a1071736 --- /dev/null +++ b/fuzz/fuzz_targets/msg_targets/gen_target.sh @@ -0,0 +1,5 @@ +for target in CommitmentSigned FundingCreated FundingLocked FundingSigned OpenChannel RevokeAndACK Shutdown UpdateAddHTLC UpdateFailHTLC UpdateFailMalformedHTLC UpdateFee UpdateFulfillHTLC AcceptChannel ClosingSigned; do + tn=$(echo $target | sed 's/\([a-z0-9]\)\([A-Z]\)/\1_\L\2/g') + fn=msg_$(echo $tn | tr '[:upper:]' '[:lower:]')_target.rs + cat msg_target_template.txt | sed s/MSG_TARGET/$target/ > $fn +done diff --git a/fuzz/fuzz_targets/msg_targets/msg_target_template.txt b/fuzz/fuzz_targets/msg_targets/msg_target_template.txt new file mode 100644 index 000000000..d5754ad22 --- /dev/null +++ b/fuzz/fuzz_targets/msg_targets/msg_target_template.txt @@ -0,0 +1,49 @@ +extern crate lightning; + +use lightning::ln::msgs; +use lightning::util::reset_rng_state; + +use lightning::ln::msgs::{MsgEncodable, MsgDecodable}; + +mod utils; +use utils::slice_to_be16; + +#[inline] +pub fn do_test(data: &[u8]) { + reset_rng_state(); + let mut read_pos = 0; + loop { + test_msg!(msgs::MSG_TARGET, data, read_pos); + } +} + +#[cfg(feature = "afl")] +extern crate afl; +#[cfg(feature = "afl")] +fn main() { + afl::read_stdio_bytes(|data| { + do_test(&data); + }); +} + +#[cfg(feature = "honggfuzz")] +#[macro_use] extern crate honggfuzz; +#[cfg(feature = "honggfuzz")] +fn main() { + loop { + fuzz!(|data| { + do_test(data); + }); + } +} + +#[cfg(test)] +mod tests { + use utils::extend_vec_from_hex; + #[test] + fn duplicate_crash() { + let mut a = Vec::new(); + extend_vec_from_hex("00", &mut a); + super::do_test(&a); + } +} -- 2.39.5