From cee1feb16558364e1639a7775464e8cc73111666 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 1 Jul 2022 20:53:39 +0000 Subject: [PATCH 1/4] [fuzz] Take a full struct path in msg gen_target.sh --- fuzz/src/msg_targets/gen_target.sh | 64 ++++++++++---------- fuzz/src/msg_targets/msg_target_template.txt | 6 +- 2 files changed, 34 insertions(+), 36 deletions(-) diff --git a/fuzz/src/msg_targets/gen_target.sh b/fuzz/src/msg_targets/gen_target.sh index 848793db50..fbc9f5c33a 100755 --- a/fuzz/src/msg_targets/gen_target.sh +++ b/fuzz/src/msg_targets/gen_target.sh @@ -1,7 +1,7 @@ #!/bin/sh GEN_TEST() { - tn=msg_$(echo $1 | sed 's/\([a-z0-9]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]') + tn=msg_$(echo $1 | sed s'/.*:://g' | sed 's/\([a-z0-9]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]') fn=${tn}.rs cat msg_target_template.txt | sed s/MSG_TARGET/$1/ | sed "s/TARGET_NAME/$tn/" | sed "s/TEST_MSG/$2/" | sed "s/EXTRA_ARGS/$3/" > $fn echo "pub mod $tn;" >> mod.rs @@ -11,37 +11,37 @@ echo "mod utils;" > mod.rs # Note when adding new targets here you should add a similar line in src/bin/gen_target.sh -GEN_TEST AcceptChannel test_msg_simple "" -GEN_TEST AnnouncementSignatures test_msg_simple "" -GEN_TEST ClosingSigned test_msg_simple "" -GEN_TEST CommitmentSigned test_msg_simple "" -GEN_TEST FundingCreated test_msg_simple "" -GEN_TEST ChannelReady test_msg_simple "" -GEN_TEST FundingSigned test_msg_simple "" -GEN_TEST GossipTimestampFilter test_msg_simple "" -GEN_TEST Init test_msg_simple "" -GEN_TEST OnionHopData test_msg_simple "" -GEN_TEST OpenChannel test_msg_simple "" -GEN_TEST Ping test_msg_simple "" -GEN_TEST Pong test_msg_simple "" -GEN_TEST QueryChannelRange test_msg_simple "" -GEN_TEST ReplyShortChannelIdsEnd test_msg_simple "" -GEN_TEST RevokeAndACK test_msg_simple "" -GEN_TEST Shutdown test_msg_simple "" -GEN_TEST UpdateAddHTLC test_msg_simple "" -GEN_TEST UpdateFailHTLC test_msg_simple "" -GEN_TEST UpdateFailMalformedHTLC test_msg_simple "" -GEN_TEST UpdateFee test_msg_simple "" -GEN_TEST UpdateFulfillHTLC test_msg_simple "" +GEN_TEST lightning::ln::msgs::AcceptChannel test_msg_simple "" +GEN_TEST lightning::ln::msgs::AnnouncementSignatures test_msg_simple "" +GEN_TEST lightning::ln::msgs::ClosingSigned test_msg_simple "" +GEN_TEST lightning::ln::msgs::CommitmentSigned test_msg_simple "" +GEN_TEST lightning::ln::msgs::FundingCreated test_msg_simple "" +GEN_TEST lightning::ln::msgs::ChannelReady test_msg_simple "" +GEN_TEST lightning::ln::msgs::FundingSigned test_msg_simple "" +GEN_TEST lightning::ln::msgs::GossipTimestampFilter test_msg_simple "" +GEN_TEST lightning::ln::msgs::Init test_msg_simple "" +GEN_TEST lightning::ln::msgs::OnionHopData test_msg_simple "" +GEN_TEST lightning::ln::msgs::OpenChannel test_msg_simple "" +GEN_TEST lightning::ln::msgs::Ping test_msg_simple "" +GEN_TEST lightning::ln::msgs::Pong test_msg_simple "" +GEN_TEST lightning::ln::msgs::QueryChannelRange test_msg_simple "" +GEN_TEST lightning::ln::msgs::ReplyShortChannelIdsEnd test_msg_simple "" +GEN_TEST lightning::ln::msgs::RevokeAndACK test_msg_simple "" +GEN_TEST lightning::ln::msgs::Shutdown test_msg_simple "" +GEN_TEST lightning::ln::msgs::UpdateAddHTLC test_msg_simple "" +GEN_TEST lightning::ln::msgs::UpdateFailHTLC test_msg_simple "" +GEN_TEST lightning::ln::msgs::UpdateFailMalformedHTLC test_msg_simple "" +GEN_TEST lightning::ln::msgs::UpdateFee test_msg_simple "" +GEN_TEST lightning::ln::msgs::UpdateFulfillHTLC test_msg_simple "" -GEN_TEST ChannelReestablish test_msg "" -GEN_TEST DecodedOnionErrorPacket test_msg "" +GEN_TEST lightning::ln::msgs::ChannelReestablish test_msg "" +GEN_TEST lightning::ln::msgs::DecodedOnionErrorPacket test_msg "" -GEN_TEST ChannelAnnouncement test_msg_exact "" -GEN_TEST NodeAnnouncement test_msg_exact "" -GEN_TEST QueryShortChannelIds test_msg "" -GEN_TEST ReplyChannelRange test_msg "" +GEN_TEST lightning::ln::msgs::ChannelAnnouncement test_msg_exact "" +GEN_TEST lightning::ln::msgs::NodeAnnouncement test_msg_exact "" +GEN_TEST lightning::ln::msgs::QueryShortChannelIds test_msg "" +GEN_TEST lightning::ln::msgs::ReplyChannelRange test_msg "" -GEN_TEST ErrorMessage test_msg_hole ", 32, 2" -GEN_TEST WarningMessage test_msg_hole ", 32, 2" -GEN_TEST ChannelUpdate test_msg_hole ", 108, 1" +GEN_TEST lightning::ln::msgs::ErrorMessage test_msg_hole ", 32, 2" +GEN_TEST lightning::ln::msgs::WarningMessage test_msg_hole ", 32, 2" +GEN_TEST lightning::ln::msgs::ChannelUpdate test_msg_hole ", 108, 1" diff --git a/fuzz/src/msg_targets/msg_target_template.txt b/fuzz/src/msg_targets/msg_target_template.txt index ebe832d59b..14580183e5 100644 --- a/fuzz/src/msg_targets/msg_target_template.txt +++ b/fuzz/src/msg_targets/msg_target_template.txt @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn TARGET_NAME_test(data: &[u8], _out: Out) { - TEST_MSG!(msgs::MSG_TARGET, dataEXTRA_ARGS); + TEST_MSG!(MSG_TARGET, dataEXTRA_ARGS); } #[no_mangle] pub extern "C" fn TARGET_NAME_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - TEST_MSG!(msgs::MSG_TARGET, dataEXTRA_ARGS); + TEST_MSG!(MSG_TARGET, dataEXTRA_ARGS); } From c9a52d6ecff5634f57bd6588d6c3e5bfed3f8db0 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 1 Jul 2022 20:54:08 +0000 Subject: [PATCH 2/4] [fuzz] Add a ChannelDetails msg target --- fuzz/src/bin/gen_target.sh | 2 ++ fuzz/src/msg_targets/gen_target.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/fuzz/src/bin/gen_target.sh b/fuzz/src/bin/gen_target.sh index b88b725037..c0daa5a3a0 100755 --- a/fuzz/src/bin/gen_target.sh +++ b/fuzz/src/bin/gen_target.sh @@ -47,3 +47,5 @@ GEN_TEST msg_channel_update msg_targets:: GEN_TEST msg_onion_hop_data msg_targets:: GEN_TEST msg_ping msg_targets:: GEN_TEST msg_pong msg_targets:: + +GEN_TEST msg_channel_details msg_targets:: diff --git a/fuzz/src/msg_targets/gen_target.sh b/fuzz/src/msg_targets/gen_target.sh index fbc9f5c33a..753a98325a 100755 --- a/fuzz/src/msg_targets/gen_target.sh +++ b/fuzz/src/msg_targets/gen_target.sh @@ -45,3 +45,5 @@ GEN_TEST lightning::ln::msgs::ReplyChannelRange test_msg "" GEN_TEST lightning::ln::msgs::ErrorMessage test_msg_hole ", 32, 2" GEN_TEST lightning::ln::msgs::WarningMessage test_msg_hole ", 32, 2" GEN_TEST lightning::ln::msgs::ChannelUpdate test_msg_hole ", 108, 1" + +GEN_TEST lightning::ln::channelmanager::ChannelDetails test_msg_simple "" From d246e613793e2a1ec016f75027ec6ef2e80f3418 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 1 Jul 2022 20:55:03 +0000 Subject: [PATCH 3/4] [fuzz] Update auto-generated target list --- fuzz/src/msg_targets/mod.rs | 1 + fuzz/src/msg_targets/msg_accept_channel.rs | 6 ++--- .../msg_announcement_signatures.rs | 6 ++--- .../msg_targets/msg_channel_announcement.rs | 6 ++--- fuzz/src/msg_targets/msg_channel_details.rs | 25 +++++++++++++++++++ fuzz/src/msg_targets/msg_channel_ready.rs | 6 ++--- .../msg_targets/msg_channel_reestablish.rs | 6 ++--- fuzz/src/msg_targets/msg_channel_update.rs | 6 ++--- fuzz/src/msg_targets/msg_closing_signed.rs | 6 ++--- fuzz/src/msg_targets/msg_commitment_signed.rs | 6 ++--- .../msg_decoded_onion_error_packet.rs | 6 ++--- fuzz/src/msg_targets/msg_error_message.rs | 6 ++--- fuzz/src/msg_targets/msg_funding_created.rs | 6 ++--- fuzz/src/msg_targets/msg_funding_signed.rs | 6 ++--- .../msg_gossip_timestamp_filter.rs | 6 ++--- fuzz/src/msg_targets/msg_init.rs | 6 ++--- fuzz/src/msg_targets/msg_node_announcement.rs | 6 ++--- fuzz/src/msg_targets/msg_onion_hop_data.rs | 6 ++--- fuzz/src/msg_targets/msg_open_channel.rs | 6 ++--- fuzz/src/msg_targets/msg_ping.rs | 6 ++--- fuzz/src/msg_targets/msg_pong.rs | 6 ++--- .../msg_targets/msg_query_channel_range.rs | 6 ++--- .../msg_query_short_channel_ids.rs | 6 ++--- .../msg_targets/msg_reply_channel_range.rs | 6 ++--- .../msg_reply_short_channel_ids_end.rs | 6 ++--- fuzz/src/msg_targets/msg_revoke_and_ack.rs | 6 ++--- fuzz/src/msg_targets/msg_shutdown.rs | 6 ++--- fuzz/src/msg_targets/msg_update_add_htlc.rs | 6 ++--- fuzz/src/msg_targets/msg_update_fail_htlc.rs | 6 ++--- .../msg_update_fail_malformed_htlc.rs | 6 ++--- fuzz/src/msg_targets/msg_update_fee.rs | 6 ++--- .../msg_targets/msg_update_fulfill_htlc.rs | 6 ++--- fuzz/src/msg_targets/msg_warning_message.rs | 6 ++--- fuzz/targets.h | 1 + 34 files changed, 89 insertions(+), 124 deletions(-) create mode 100644 fuzz/src/msg_targets/msg_channel_details.rs diff --git a/fuzz/src/msg_targets/mod.rs b/fuzz/src/msg_targets/mod.rs index dd1540ce51..67d66e23f5 100644 --- a/fuzz/src/msg_targets/mod.rs +++ b/fuzz/src/msg_targets/mod.rs @@ -30,3 +30,4 @@ pub mod msg_reply_channel_range; pub mod msg_error_message; pub mod msg_warning_message; pub mod msg_channel_update; +pub mod msg_channel_details; diff --git a/fuzz/src/msg_targets/msg_accept_channel.rs b/fuzz/src/msg_targets/msg_accept_channel.rs index a8ec438784..1732bf2f79 100644 --- a/fuzz/src/msg_targets/msg_accept_channel.rs +++ b/fuzz/src/msg_targets/msg_accept_channel.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_accept_channel_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::AcceptChannel, data); + test_msg_simple!(lightning::ln::msgs::AcceptChannel, data); } #[no_mangle] pub extern "C" fn msg_accept_channel_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::AcceptChannel, data); + test_msg_simple!(lightning::ln::msgs::AcceptChannel, data); } diff --git a/fuzz/src/msg_targets/msg_announcement_signatures.rs b/fuzz/src/msg_targets/msg_announcement_signatures.rs index 0fc40fcb69..15e4e6d804 100644 --- a/fuzz/src/msg_targets/msg_announcement_signatures.rs +++ b/fuzz/src/msg_targets/msg_announcement_signatures.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_announcement_signatures_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::AnnouncementSignatures, data); + test_msg_simple!(lightning::ln::msgs::AnnouncementSignatures, data); } #[no_mangle] pub extern "C" fn msg_announcement_signatures_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::AnnouncementSignatures, data); + test_msg_simple!(lightning::ln::msgs::AnnouncementSignatures, data); } diff --git a/fuzz/src/msg_targets/msg_channel_announcement.rs b/fuzz/src/msg_targets/msg_channel_announcement.rs index 53ffe0eff7..7a36520fb2 100644 --- a/fuzz/src/msg_targets/msg_channel_announcement.rs +++ b/fuzz/src/msg_targets/msg_channel_announcement.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_channel_announcement_test(data: &[u8], _out: Out) { - test_msg_exact!(msgs::ChannelAnnouncement, data); + test_msg_exact!(lightning::ln::msgs::ChannelAnnouncement, data); } #[no_mangle] pub extern "C" fn msg_channel_announcement_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_exact!(msgs::ChannelAnnouncement, data); + test_msg_exact!(lightning::ln::msgs::ChannelAnnouncement, data); } diff --git a/fuzz/src/msg_targets/msg_channel_details.rs b/fuzz/src/msg_targets/msg_channel_details.rs new file mode 100644 index 0000000000..f448a71988 --- /dev/null +++ b/fuzz/src/msg_targets/msg_channel_details.rs @@ -0,0 +1,25 @@ +// This file is Copyright its original authors, visible in version control +// history. +// +// This file is licensed under the Apache License, Version 2.0 or the MIT license +// , at your option. +// You may not use this file except in accordance with one or both of these +// licenses. + +// This file is auto-generated by gen_target.sh based on msg_target_template.txt +// To modify it, modify msg_target_template.txt and run gen_target.sh instead. + +use msg_targets::utils::VecWriter; +use utils::test_logger; + +#[inline] +pub fn msg_channel_details_test(data: &[u8], _out: Out) { + test_msg_simple!(lightning::ln::channelmanager::ChannelDetails, data); +} + +#[no_mangle] +pub extern "C" fn msg_channel_details_run(data: *const u8, datalen: usize) { + let data = unsafe { std::slice::from_raw_parts(data, datalen) }; + test_msg_simple!(lightning::ln::channelmanager::ChannelDetails, data); +} diff --git a/fuzz/src/msg_targets/msg_channel_ready.rs b/fuzz/src/msg_targets/msg_channel_ready.rs index e5f3b25c69..d95a86004f 100644 --- a/fuzz/src/msg_targets/msg_channel_ready.rs +++ b/fuzz/src/msg_targets/msg_channel_ready.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_channel_ready_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::ChannelReady, data); + test_msg_simple!(lightning::ln::msgs::ChannelReady, data); } #[no_mangle] pub extern "C" fn msg_channel_ready_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::ChannelReady, data); + test_msg_simple!(lightning::ln::msgs::ChannelReady, data); } diff --git a/fuzz/src/msg_targets/msg_channel_reestablish.rs b/fuzz/src/msg_targets/msg_channel_reestablish.rs index 7316bfbdf8..2b934c00c2 100644 --- a/fuzz/src/msg_targets/msg_channel_reestablish.rs +++ b/fuzz/src/msg_targets/msg_channel_reestablish.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_channel_reestablish_test(data: &[u8], _out: Out) { - test_msg!(msgs::ChannelReestablish, data); + test_msg!(lightning::ln::msgs::ChannelReestablish, data); } #[no_mangle] pub extern "C" fn msg_channel_reestablish_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg!(msgs::ChannelReestablish, data); + test_msg!(lightning::ln::msgs::ChannelReestablish, data); } diff --git a/fuzz/src/msg_targets/msg_channel_update.rs b/fuzz/src/msg_targets/msg_channel_update.rs index 1cd9ddbbfe..7c7822e659 100644 --- a/fuzz/src/msg_targets/msg_channel_update.rs +++ b/fuzz/src/msg_targets/msg_channel_update.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_channel_update_test(data: &[u8], _out: Out) { - test_msg_hole!(msgs::ChannelUpdate, data, 108, 1); + test_msg_hole!(lightning::ln::msgs::ChannelUpdate, data, 108, 1); } #[no_mangle] pub extern "C" fn msg_channel_update_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_hole!(msgs::ChannelUpdate, data, 108, 1); + test_msg_hole!(lightning::ln::msgs::ChannelUpdate, data, 108, 1); } diff --git a/fuzz/src/msg_targets/msg_closing_signed.rs b/fuzz/src/msg_targets/msg_closing_signed.rs index 52f39af29a..f494acf62a 100644 --- a/fuzz/src/msg_targets/msg_closing_signed.rs +++ b/fuzz/src/msg_targets/msg_closing_signed.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_closing_signed_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::ClosingSigned, data); + test_msg_simple!(lightning::ln::msgs::ClosingSigned, data); } #[no_mangle] pub extern "C" fn msg_closing_signed_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::ClosingSigned, data); + test_msg_simple!(lightning::ln::msgs::ClosingSigned, data); } diff --git a/fuzz/src/msg_targets/msg_commitment_signed.rs b/fuzz/src/msg_targets/msg_commitment_signed.rs index 163ce74460..63c38ce8e5 100644 --- a/fuzz/src/msg_targets/msg_commitment_signed.rs +++ b/fuzz/src/msg_targets/msg_commitment_signed.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_commitment_signed_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::CommitmentSigned, data); + test_msg_simple!(lightning::ln::msgs::CommitmentSigned, data); } #[no_mangle] pub extern "C" fn msg_commitment_signed_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::CommitmentSigned, data); + test_msg_simple!(lightning::ln::msgs::CommitmentSigned, data); } diff --git a/fuzz/src/msg_targets/msg_decoded_onion_error_packet.rs b/fuzz/src/msg_targets/msg_decoded_onion_error_packet.rs index 92fb532e64..af4963245b 100644 --- a/fuzz/src/msg_targets/msg_decoded_onion_error_packet.rs +++ b/fuzz/src/msg_targets/msg_decoded_onion_error_packet.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_decoded_onion_error_packet_test(data: &[u8], _out: Out) { - test_msg!(msgs::DecodedOnionErrorPacket, data); + test_msg!(lightning::ln::msgs::DecodedOnionErrorPacket, data); } #[no_mangle] pub extern "C" fn msg_decoded_onion_error_packet_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg!(msgs::DecodedOnionErrorPacket, data); + test_msg!(lightning::ln::msgs::DecodedOnionErrorPacket, data); } diff --git a/fuzz/src/msg_targets/msg_error_message.rs b/fuzz/src/msg_targets/msg_error_message.rs index 7fba2c4dc8..4a70074043 100644 --- a/fuzz/src/msg_targets/msg_error_message.rs +++ b/fuzz/src/msg_targets/msg_error_message.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_error_message_test(data: &[u8], _out: Out) { - test_msg_hole!(msgs::ErrorMessage, data, 32, 2); + test_msg_hole!(lightning::ln::msgs::ErrorMessage, data, 32, 2); } #[no_mangle] pub extern "C" fn msg_error_message_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_hole!(msgs::ErrorMessage, data, 32, 2); + test_msg_hole!(lightning::ln::msgs::ErrorMessage, data, 32, 2); } diff --git a/fuzz/src/msg_targets/msg_funding_created.rs b/fuzz/src/msg_targets/msg_funding_created.rs index e0005cb082..7fad86e743 100644 --- a/fuzz/src/msg_targets/msg_funding_created.rs +++ b/fuzz/src/msg_targets/msg_funding_created.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_funding_created_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::FundingCreated, data); + test_msg_simple!(lightning::ln::msgs::FundingCreated, data); } #[no_mangle] pub extern "C" fn msg_funding_created_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::FundingCreated, data); + test_msg_simple!(lightning::ln::msgs::FundingCreated, data); } diff --git a/fuzz/src/msg_targets/msg_funding_signed.rs b/fuzz/src/msg_targets/msg_funding_signed.rs index f0586e7b29..82886d6393 100644 --- a/fuzz/src/msg_targets/msg_funding_signed.rs +++ b/fuzz/src/msg_targets/msg_funding_signed.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_funding_signed_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::FundingSigned, data); + test_msg_simple!(lightning::ln::msgs::FundingSigned, data); } #[no_mangle] pub extern "C" fn msg_funding_signed_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::FundingSigned, data); + test_msg_simple!(lightning::ln::msgs::FundingSigned, data); } diff --git a/fuzz/src/msg_targets/msg_gossip_timestamp_filter.rs b/fuzz/src/msg_targets/msg_gossip_timestamp_filter.rs index 448aaffc90..5c14a24162 100644 --- a/fuzz/src/msg_targets/msg_gossip_timestamp_filter.rs +++ b/fuzz/src/msg_targets/msg_gossip_timestamp_filter.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_gossip_timestamp_filter_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::GossipTimestampFilter, data); + test_msg_simple!(lightning::ln::msgs::GossipTimestampFilter, data); } #[no_mangle] pub extern "C" fn msg_gossip_timestamp_filter_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::GossipTimestampFilter, data); + test_msg_simple!(lightning::ln::msgs::GossipTimestampFilter, data); } diff --git a/fuzz/src/msg_targets/msg_init.rs b/fuzz/src/msg_targets/msg_init.rs index 4aa5c4a314..efa53a473e 100644 --- a/fuzz/src/msg_targets/msg_init.rs +++ b/fuzz/src/msg_targets/msg_init.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_init_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::Init, data); + test_msg_simple!(lightning::ln::msgs::Init, data); } #[no_mangle] pub extern "C" fn msg_init_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::Init, data); + test_msg_simple!(lightning::ln::msgs::Init, data); } diff --git a/fuzz/src/msg_targets/msg_node_announcement.rs b/fuzz/src/msg_targets/msg_node_announcement.rs index 8f5751b9a0..57c05145fc 100644 --- a/fuzz/src/msg_targets/msg_node_announcement.rs +++ b/fuzz/src/msg_targets/msg_node_announcement.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_node_announcement_test(data: &[u8], _out: Out) { - test_msg_exact!(msgs::NodeAnnouncement, data); + test_msg_exact!(lightning::ln::msgs::NodeAnnouncement, data); } #[no_mangle] pub extern "C" fn msg_node_announcement_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_exact!(msgs::NodeAnnouncement, data); + test_msg_exact!(lightning::ln::msgs::NodeAnnouncement, data); } diff --git a/fuzz/src/msg_targets/msg_onion_hop_data.rs b/fuzz/src/msg_targets/msg_onion_hop_data.rs index 757f316190..d73523dc15 100644 --- a/fuzz/src/msg_targets/msg_onion_hop_data.rs +++ b/fuzz/src/msg_targets/msg_onion_hop_data.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_onion_hop_data_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::OnionHopData, data); + test_msg_simple!(lightning::ln::msgs::OnionHopData, data); } #[no_mangle] pub extern "C" fn msg_onion_hop_data_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::OnionHopData, data); + test_msg_simple!(lightning::ln::msgs::OnionHopData, data); } diff --git a/fuzz/src/msg_targets/msg_open_channel.rs b/fuzz/src/msg_targets/msg_open_channel.rs index ce637c167e..2508fa353b 100644 --- a/fuzz/src/msg_targets/msg_open_channel.rs +++ b/fuzz/src/msg_targets/msg_open_channel.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_open_channel_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::OpenChannel, data); + test_msg_simple!(lightning::ln::msgs::OpenChannel, data); } #[no_mangle] pub extern "C" fn msg_open_channel_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::OpenChannel, data); + test_msg_simple!(lightning::ln::msgs::OpenChannel, data); } diff --git a/fuzz/src/msg_targets/msg_ping.rs b/fuzz/src/msg_targets/msg_ping.rs index 7b44ae1804..36d4d0d8ae 100644 --- a/fuzz/src/msg_targets/msg_ping.rs +++ b/fuzz/src/msg_targets/msg_ping.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_ping_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::Ping, data); + test_msg_simple!(lightning::ln::msgs::Ping, data); } #[no_mangle] pub extern "C" fn msg_ping_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::Ping, data); + test_msg_simple!(lightning::ln::msgs::Ping, data); } diff --git a/fuzz/src/msg_targets/msg_pong.rs b/fuzz/src/msg_targets/msg_pong.rs index cff4a54fac..ea8a1bdd8a 100644 --- a/fuzz/src/msg_targets/msg_pong.rs +++ b/fuzz/src/msg_targets/msg_pong.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_pong_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::Pong, data); + test_msg_simple!(lightning::ln::msgs::Pong, data); } #[no_mangle] pub extern "C" fn msg_pong_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::Pong, data); + test_msg_simple!(lightning::ln::msgs::Pong, data); } diff --git a/fuzz/src/msg_targets/msg_query_channel_range.rs b/fuzz/src/msg_targets/msg_query_channel_range.rs index 4b3de6aa89..75a2f042a3 100644 --- a/fuzz/src/msg_targets/msg_query_channel_range.rs +++ b/fuzz/src/msg_targets/msg_query_channel_range.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_query_channel_range_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::QueryChannelRange, data); + test_msg_simple!(lightning::ln::msgs::QueryChannelRange, data); } #[no_mangle] pub extern "C" fn msg_query_channel_range_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::QueryChannelRange, data); + test_msg_simple!(lightning::ln::msgs::QueryChannelRange, data); } diff --git a/fuzz/src/msg_targets/msg_query_short_channel_ids.rs b/fuzz/src/msg_targets/msg_query_short_channel_ids.rs index 99cde11175..f536c7f4f3 100644 --- a/fuzz/src/msg_targets/msg_query_short_channel_ids.rs +++ b/fuzz/src/msg_targets/msg_query_short_channel_ids.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_query_short_channel_ids_test(data: &[u8], _out: Out) { - test_msg!(msgs::QueryShortChannelIds, data); + test_msg!(lightning::ln::msgs::QueryShortChannelIds, data); } #[no_mangle] pub extern "C" fn msg_query_short_channel_ids_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg!(msgs::QueryShortChannelIds, data); + test_msg!(lightning::ln::msgs::QueryShortChannelIds, data); } diff --git a/fuzz/src/msg_targets/msg_reply_channel_range.rs b/fuzz/src/msg_targets/msg_reply_channel_range.rs index d23b58a2db..0fd0ed6340 100644 --- a/fuzz/src/msg_targets/msg_reply_channel_range.rs +++ b/fuzz/src/msg_targets/msg_reply_channel_range.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_reply_channel_range_test(data: &[u8], _out: Out) { - test_msg!(msgs::ReplyChannelRange, data); + test_msg!(lightning::ln::msgs::ReplyChannelRange, data); } #[no_mangle] pub extern "C" fn msg_reply_channel_range_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg!(msgs::ReplyChannelRange, data); + test_msg!(lightning::ln::msgs::ReplyChannelRange, data); } diff --git a/fuzz/src/msg_targets/msg_reply_short_channel_ids_end.rs b/fuzz/src/msg_targets/msg_reply_short_channel_ids_end.rs index 7634329a43..712bb3ac47 100644 --- a/fuzz/src/msg_targets/msg_reply_short_channel_ids_end.rs +++ b/fuzz/src/msg_targets/msg_reply_short_channel_ids_end.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_reply_short_channel_ids_end_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::ReplyShortChannelIdsEnd, data); + test_msg_simple!(lightning::ln::msgs::ReplyShortChannelIdsEnd, data); } #[no_mangle] pub extern "C" fn msg_reply_short_channel_ids_end_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::ReplyShortChannelIdsEnd, data); + test_msg_simple!(lightning::ln::msgs::ReplyShortChannelIdsEnd, data); } diff --git a/fuzz/src/msg_targets/msg_revoke_and_ack.rs b/fuzz/src/msg_targets/msg_revoke_and_ack.rs index 873939ca7c..cd3e64c36d 100644 --- a/fuzz/src/msg_targets/msg_revoke_and_ack.rs +++ b/fuzz/src/msg_targets/msg_revoke_and_ack.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_revoke_and_ack_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::RevokeAndACK, data); + test_msg_simple!(lightning::ln::msgs::RevokeAndACK, data); } #[no_mangle] pub extern "C" fn msg_revoke_and_ack_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::RevokeAndACK, data); + test_msg_simple!(lightning::ln::msgs::RevokeAndACK, data); } diff --git a/fuzz/src/msg_targets/msg_shutdown.rs b/fuzz/src/msg_targets/msg_shutdown.rs index e6e74cc661..465d1e39eb 100644 --- a/fuzz/src/msg_targets/msg_shutdown.rs +++ b/fuzz/src/msg_targets/msg_shutdown.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_shutdown_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::Shutdown, data); + test_msg_simple!(lightning::ln::msgs::Shutdown, data); } #[no_mangle] pub extern "C" fn msg_shutdown_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::Shutdown, data); + test_msg_simple!(lightning::ln::msgs::Shutdown, data); } diff --git a/fuzz/src/msg_targets/msg_update_add_htlc.rs b/fuzz/src/msg_targets/msg_update_add_htlc.rs index 409f0fac8d..f031a4d89e 100644 --- a/fuzz/src/msg_targets/msg_update_add_htlc.rs +++ b/fuzz/src/msg_targets/msg_update_add_htlc.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_update_add_htlc_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::UpdateAddHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateAddHTLC, data); } #[no_mangle] pub extern "C" fn msg_update_add_htlc_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::UpdateAddHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateAddHTLC, data); } diff --git a/fuzz/src/msg_targets/msg_update_fail_htlc.rs b/fuzz/src/msg_targets/msg_update_fail_htlc.rs index 12d3f1c3fc..8d9dfedfcf 100644 --- a/fuzz/src/msg_targets/msg_update_fail_htlc.rs +++ b/fuzz/src/msg_targets/msg_update_fail_htlc.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_update_fail_htlc_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::UpdateFailHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateFailHTLC, data); } #[no_mangle] pub extern "C" fn msg_update_fail_htlc_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::UpdateFailHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateFailHTLC, data); } diff --git a/fuzz/src/msg_targets/msg_update_fail_malformed_htlc.rs b/fuzz/src/msg_targets/msg_update_fail_malformed_htlc.rs index 0b36070d1e..2635a4cb6a 100644 --- a/fuzz/src/msg_targets/msg_update_fail_malformed_htlc.rs +++ b/fuzz/src/msg_targets/msg_update_fail_malformed_htlc.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_update_fail_malformed_htlc_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::UpdateFailMalformedHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateFailMalformedHTLC, data); } #[no_mangle] pub extern "C" fn msg_update_fail_malformed_htlc_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::UpdateFailMalformedHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateFailMalformedHTLC, data); } diff --git a/fuzz/src/msg_targets/msg_update_fee.rs b/fuzz/src/msg_targets/msg_update_fee.rs index 3c23a902f5..b891a36319 100644 --- a/fuzz/src/msg_targets/msg_update_fee.rs +++ b/fuzz/src/msg_targets/msg_update_fee.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_update_fee_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::UpdateFee, data); + test_msg_simple!(lightning::ln::msgs::UpdateFee, data); } #[no_mangle] pub extern "C" fn msg_update_fee_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::UpdateFee, data); + test_msg_simple!(lightning::ln::msgs::UpdateFee, data); } diff --git a/fuzz/src/msg_targets/msg_update_fulfill_htlc.rs b/fuzz/src/msg_targets/msg_update_fulfill_htlc.rs index 460ff0e167..a96aa3729a 100644 --- a/fuzz/src/msg_targets/msg_update_fulfill_htlc.rs +++ b/fuzz/src/msg_targets/msg_update_fulfill_htlc.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_update_fulfill_htlc_test(data: &[u8], _out: Out) { - test_msg_simple!(msgs::UpdateFulfillHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateFulfillHTLC, data); } #[no_mangle] pub extern "C" fn msg_update_fulfill_htlc_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_simple!(msgs::UpdateFulfillHTLC, data); + test_msg_simple!(lightning::ln::msgs::UpdateFulfillHTLC, data); } diff --git a/fuzz/src/msg_targets/msg_warning_message.rs b/fuzz/src/msg_targets/msg_warning_message.rs index f033b6fd6e..abcef229bd 100644 --- a/fuzz/src/msg_targets/msg_warning_message.rs +++ b/fuzz/src/msg_targets/msg_warning_message.rs @@ -10,18 +10,16 @@ // This file is auto-generated by gen_target.sh based on msg_target_template.txt // To modify it, modify msg_target_template.txt and run gen_target.sh instead. -use lightning::ln::msgs; - use msg_targets::utils::VecWriter; use utils::test_logger; #[inline] pub fn msg_warning_message_test(data: &[u8], _out: Out) { - test_msg_hole!(msgs::WarningMessage, data, 32, 2); + test_msg_hole!(lightning::ln::msgs::WarningMessage, data, 32, 2); } #[no_mangle] pub extern "C" fn msg_warning_message_run(data: *const u8, datalen: usize) { let data = unsafe { std::slice::from_raw_parts(data, datalen) }; - test_msg_hole!(msgs::WarningMessage, data, 32, 2); + test_msg_hole!(lightning::ln::msgs::WarningMessage, data, 32, 2); } diff --git a/fuzz/targets.h b/fuzz/targets.h index d142aa6487..7958a6f614 100644 --- a/fuzz/targets.h +++ b/fuzz/targets.h @@ -36,3 +36,4 @@ void msg_channel_update_run(const unsigned char* data, size_t data_len); void msg_onion_hop_data_run(const unsigned char* data, size_t data_len); void msg_ping_run(const unsigned char* data, size_t data_len); void msg_pong_run(const unsigned char* data, size_t data_len); +void msg_channel_details_run(const unsigned char* data, size_t data_len); From f1b9bd34b83f9e8161b6d7bbc56a420cc572502a Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Fri, 1 Jul 2022 21:14:19 +0000 Subject: [PATCH 4/4] Do not execute the default_value expr until we need it in TLV deser This fixes an insta-panic in `ChannelMonitor` deserialization where we always `unwrap` a previous value to determine the default value of a later field. However, because we always ran the `unwrap` before the previous field is read, we'd always panic. The fix is rather simple - use a `OptionDeserWrapper` for `default_value` fields and only fill in the default value if no value was read while walking the TLV stream. The only complexity comes from our desire to support `read_tlv_field` calls that use an explicit field rather than an `Option` of some sort, which requires some statement which can assign both an `OptionDeserWrapper` variable and a `T` variable. We settle on `x = t.into()` and implement `From for OptionDeserWrapper` which works, though it requires users to specify types explicitly due to Rust determining expression types prior to macro execution, completely guessing with no knowlege for integer expressions (see https://github.com/rust-lang/rust/issues/91369). --- lightning/src/ln/channelmanager.rs | 2 +- lightning/src/util/config.rs | 4 ++-- lightning/src/util/ser.rs | 6 ++++++ lightning/src/util/ser_macros.rs | 8 ++++---- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index 871ebb92d3..14c9f8b02b 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -6198,7 +6198,7 @@ impl_writeable_tlv_based!(ChannelDetails, { (18, outbound_capacity_msat, required), // Note that by the time we get past the required read above, outbound_capacity_msat will be // filled in, so we can safely unwrap it here. - (19, next_outbound_htlc_limit_msat, (default_value, outbound_capacity_msat.0.unwrap())), + (19, next_outbound_htlc_limit_msat, (default_value, outbound_capacity_msat.0.unwrap() as u64)), (20, inbound_capacity_msat, required), (22, confirmations_required, option), (24, force_close_spend_delay, option), diff --git a/lightning/src/util/config.rs b/lightning/src/util/config.rs index be7accc18d..2f65e958f8 100644 --- a/lightning/src/util/config.rs +++ b/lightning/src/util/config.rs @@ -407,9 +407,9 @@ impl ::util::ser::Readable for LegacyChannelConfig { let mut forwarding_fee_base_msat = 0; read_tlv_fields!(reader, { (0, forwarding_fee_proportional_millionths, required), - (1, max_dust_htlc_exposure_msat, (default_value, 5_000_000)), + (1, max_dust_htlc_exposure_msat, (default_value, 5_000_000u64)), (2, cltv_expiry_delta, required), - (3, force_close_avoidance_max_fee_satoshis, (default_value, 1000)), + (3, force_close_avoidance_max_fee_satoshis, (default_value, 1000u64)), (4, announced_channel, required), (6, commit_upfront_shutdown_pubkey, required), (8, forwarding_fee_base_msat, required), diff --git a/lightning/src/util/ser.rs b/lightning/src/util/ser.rs index a45806eef5..fc795f9dd6 100644 --- a/lightning/src/util/ser.rs +++ b/lightning/src/util/ser.rs @@ -266,6 +266,12 @@ impl Readable for OptionDeserWrapper { Ok(Self(Some(Readable::read(reader)?))) } } +/// When handling default_values, we want to map the default-value T directly +/// to a OptionDeserWrapper in a way that works for `field: T = t;` as +/// well. Thus, we assume `Into for T` does nothing and use that. +impl From for OptionDeserWrapper { + fn from(t: T) -> OptionDeserWrapper { OptionDeserWrapper(Some(t)) } +} /// Wrapper to write each element of a Vec with no length prefix pub(crate) struct VecWriteWrapper<'a, T: Writeable>(pub &'a Vec); diff --git a/lightning/src/util/ser_macros.rs b/lightning/src/util/ser_macros.rs index 816426b113..351c2a1f5e 100644 --- a/lightning/src/util/ser_macros.rs +++ b/lightning/src/util/ser_macros.rs @@ -99,7 +99,7 @@ macro_rules! check_tlv_order { #[allow(unused_comparisons)] // Note that $type may be 0 making the second comparison always true let invalid_order = ($last_seen_type.is_none() || $last_seen_type.unwrap() < $type) && $typ.0 > $type; if invalid_order { - $field = $default; + $field = $default.into(); } }}; ($last_seen_type: expr, $typ: expr, $type: expr, $field: ident, required) => {{ @@ -128,7 +128,7 @@ macro_rules! check_missing_tlv { #[allow(unused_comparisons)] // Note that $type may be 0 making the second comparison always true let missing_req_type = $last_seen_type.is_none() || $last_seen_type.unwrap() < $type; if missing_req_type { - $field = $default; + $field = $default.into(); } }}; ($last_seen_type: expr, $type: expr, $field: ident, required) => {{ @@ -349,7 +349,7 @@ macro_rules! read_tlv_fields { macro_rules! init_tlv_based_struct_field { ($field: ident, (default_value, $default: expr)) => { - $field + $field.0.unwrap() }; ($field: ident, option) => { $field @@ -364,7 +364,7 @@ macro_rules! init_tlv_based_struct_field { macro_rules! init_tlv_field_var { ($field: ident, (default_value, $default: expr)) => { - let mut $field = $default; + let mut $field = ::util::ser::OptionDeserWrapper(None); }; ($field: ident, required) => { let mut $field = ::util::ser::OptionDeserWrapper(None);