Skip to content

Commit

Permalink
Merge pull request #1588 from TheBlueMatt/2022-06-ffs-dumb-ser
Browse files Browse the repository at this point in the history
Do not execute the default_value expr until we need it in TLV deser
  • Loading branch information
TheBlueMatt committed Jul 5, 2022
2 parents a3f181a + f1b9bd3 commit e403999
Show file tree
Hide file tree
Showing 41 changed files with 143 additions and 170 deletions.
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);
}

0 comments on commit e403999

Please sign in to comment.