X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fln%2Fchannel.rs;h=83698f1172632ffc8903e4ee7cdb1091867e429f;hb=a805567683ea3a495122915671fef125fb45264f;hp=bc1e8b45dc3d5b8b98528816420d2c05f4fdb201;hpb=ac821e448f03818ea71507852e73cce10676b4c2;p=rust-lightning diff --git a/src/ln/channel.rs b/src/ln/channel.rs index bc1e8b45..83698f11 100644 --- a/src/ln/channel.rs +++ b/src/ln/channel.rs @@ -263,7 +263,7 @@ const INITIAL_COMMITMENT_NUMBER: u64 = (1 << 48) - 1; // has been completed, and then turn into a Channel to get compiler-time enforcement of things like // calling channel_id() before we're set up or things like get_outbound_funding_signed on an // inbound channel. -pub struct Channel { +pub(super) struct Channel { user_id: u64, channel_id: [u8; 32], @@ -2012,7 +2012,12 @@ impl Channel { if self.channel_outbound && msg.scriptpubkey.len() > 34 { return Err(HandleError{err: "Got shutdown_scriptpubkey of absurd length from remote peer", action: None}); } - //TODO: Check shutdown_scriptpubkey form as BOLT says we must? WHYYY + + //Check shutdown_scriptpubkey form as BOLT says we must + if !(msg.scriptpubkey.is_p2pkh()) && !(msg.scriptpubkey.is_p2sh()) + && !(msg.scriptpubkey.is_v0_p2wpkh()) && !(msg.scriptpubkey.is_v0_p2wsh()){ + return Err(HandleError{err: "Got an invalid scriptpubkey from remote peer", action: Some(msgs::ErrorAction::DisconnectPeer{ msg: None })}); + } if self.their_shutdown_scriptpubkey.is_some() { if Some(&msg.scriptpubkey) != self.their_shutdown_scriptpubkey.as_ref() { @@ -2098,7 +2103,7 @@ impl Channel { if !self.pending_inbound_htlcs.is_empty() || !self.pending_outbound_htlcs.is_empty() { return Err(HandleError{err: "Remote end sent us a closing_signed while there were still pending HTLCs", action: None}); } - if msg.fee_satoshis > 21000000 * 10000000 { + if msg.fee_satoshis > 21000000 * 10000000 { //this is required to stop potential overflow in build_closing_transaction return Err(HandleError{err: "Remote tried to send us a closing tx with > 21 million BTC fee", action: None}); }