From e9b1af277f36d1840370e9f5bdb062a0197c34d9 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 22 Mar 2018 17:40:53 -0400 Subject: [PATCH] Check validity of dust_limit_satoshis in remote messages --- src/ln/channel.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ln/channel.rs b/src/ln/channel.rs index bf778815e..2b8b085a8 100644 --- a/src/ln/channel.rs +++ b/src/ln/channel.rs @@ -366,7 +366,9 @@ impl Channel { if msg.push_msat > (msg.funding_satoshis - msg.channel_reserve_satoshis) * 1000 { return Err(HandleError{err: "push_msat more than highest possible value", msg: None}); } - //TODO Check if dust_limit is sane? + if msg.dust_limit_satoshis > 21000000 * 100000000 { + return Err(HandleError{err: "Peer never wants payout outputs?", msg: None}); + } if msg.max_htlc_value_in_flight_msat > msg.funding_satoshis * 1000 { return Err(HandleError{err: "Bogus max_htlc_value_in_flight_satoshis", msg: None}); } @@ -826,13 +828,15 @@ impl Channel { pub fn accept_channel(&mut self, msg: &msgs::AcceptChannel) -> Result<(), HandleError> { // Check sanity of message fields: - //TODO Check if dust_limit is sane? if !self.channel_outbound { return Err(HandleError{err: "Got an accept_channel message from an inbound peer", msg: None}); } if self.channel_state != ChannelState::OurInitSent as u32 { return Err(HandleError{err: "Got an accept_channel message at a strange time", msg: None}); } + if msg.dust_limit_satoshis > 21000000 * 100000000 { + return Err(HandleError{err: "Peer never wants payout outputs?", msg: None}); + } if msg.max_htlc_value_in_flight_msat > self.channel_value_satoshis * 1000 { return Err(HandleError{err: "Bogus max_htlc_value_in_flight_satoshis", msg: None}); } -- 2.39.5