From: Yuntai Kyong Date: Sat, 12 May 2018 20:09:46 +0000 (+0900) Subject: add script to generate msg test target X-Git-Tag: v0.0.12~407^2~1 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=e2ff3393ea7b95432a0e13f69f423028682e15bb;p=rust-lightning add script to generate msg test target --- 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); + } +}