Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Do not execute the default_value expr until we need it in TLV deser #1588

Merged
merged 4 commits into from Jul 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions fuzz/src/bin/gen_target.sh
Expand Up @@ -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::
72 changes: 37 additions & 35 deletions 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
Expand All @@ -11,37 +11,39 @@ 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 ChannelReestablish test_msg ""
GEN_TEST 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 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::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 lightning::ln::msgs::ChannelReestablish test_msg ""
GEN_TEST lightning::ln::msgs::DecodedOnionErrorPacket 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 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 ""
1 change: 1 addition & 0 deletions fuzz/src/msg_targets/mod.rs
Expand Up @@ -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;
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_accept_channel.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_announcement_signatures.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_channel_announcement.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
25 changes: 25 additions & 0 deletions 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 <LICENSE-APACHE
// or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_channel_ready.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_channel_reestablish.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_channel_update.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_closing_signed.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_commitment_signed.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_decoded_onion_error_packet.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_error_message.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_funding_created.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_funding_signed.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}
6 changes: 2 additions & 4 deletions fuzz/src/msg_targets/msg_gossip_timestamp_filter.rs
Expand Up @@ -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<Out: test_logger::Output>(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);
}