Correct error when a peer opens a channel with a huge push_msat 2022-04-fuzz-underflow
authorMatt Corallo <git@bluematt.me>
Thu, 28 Apr 2022 19:46:22 +0000 (19:46 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 28 Apr 2022 19:46:22 +0000 (19:46 +0000)
The calculation uses the reserve, so we should mention it in the
error we send to our peers.

lightning/src/ln/channel.rs
lightning/src/ln/functional_tests.rs

index 8ed47bf3afeae91c0c4b0f50a1334295d5838cf2..60ff1ded1ad99220686729be383ea8967869ec68 100644 (file)
@@ -1084,7 +1084,7 @@ impl<Signer: Sign> Channel<Signer> {
                }
                let full_channel_value_msat = (msg.funding_satoshis - msg.channel_reserve_satoshis) * 1000;
                if msg.push_msat > full_channel_value_msat {
-                       return Err(ChannelError::Close(format!("push_msat {} was larger than funding value {}", msg.push_msat, full_channel_value_msat)));
+                       return Err(ChannelError::Close(format!("push_msat {} was larger than channel amount minus reserve ({})", msg.push_msat, full_channel_value_msat)));
                }
                if msg.dust_limit_satoshis > msg.funding_satoshis {
                        return Err(ChannelError::Close(format!("dust_limit_satoshis {} was larger than funding_satoshis {}. Peer never wants payout outputs?", msg.dust_limit_satoshis, msg.funding_satoshis)));
index d7bebca0e4dff41088c4583632a302f700124314..aa2551f3707c8447166f6add24b5571559167e28 100644 (file)
@@ -100,7 +100,7 @@ fn test_insane_channel_opens() {
 
        insane_open_helper("Bogus channel_reserve_satoshis", |mut msg| { msg.channel_reserve_satoshis = msg.funding_satoshis + 1; msg });
 
-       insane_open_helper(r"push_msat \d+ was larger than funding value \d+", |mut msg| { msg.push_msat = (msg.funding_satoshis - msg.channel_reserve_satoshis) * 1000 + 1; msg });
+       insane_open_helper(r"push_msat \d+ was larger than channel amount minus reserve \(\d+\)", |mut msg| { msg.push_msat = (msg.funding_satoshis - msg.channel_reserve_satoshis) * 1000 + 1; msg });
 
        insane_open_helper("Peer never wants payout outputs?", |mut msg| { msg.dust_limit_satoshis = msg.funding_satoshis + 1 ; msg });