From: benthecarman Date: Mon, 8 May 2023 22:49:05 +0000 (-0500) Subject: Check too many tx outputs upfront when verifying funding tx X-Git-Tag: v0.0.116-alpha1~45^2 X-Git-Url: http://git.bitcoin.ninja/?a=commitdiff_plain;h=fcd1127c018f8c4e6c635c2ac59b66b8d7698c8e;p=rust-lightning Check too many tx outputs upfront when verifying funding tx --- diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index 3bf215d0a..0742d96d1 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -3090,6 +3090,12 @@ where } } self.funding_transaction_generated_intern(temporary_channel_id, counterparty_node_id, funding_transaction, |chan, tx| { + if tx.output.len() > u16::max_value() as usize { + return Err(APIError::APIMisuseError { + err: "Transaction had more than 2^16 outputs, which is not supported".to_owned() + }); + } + let mut output_index = None; let expected_spk = chan.get_funding_redeemscript().to_v0_p2wsh(); for (idx, outp) in tx.output.iter().enumerate() { @@ -3099,11 +3105,6 @@ where err: "Multiple outputs matched the expected script and value".to_owned() }); } - if idx > u16::max_value() as usize { - return Err(APIError::APIMisuseError { - err: "Transaction had more than 2^16 outputs, which is not supported".to_owned() - }); - } output_index = Some(idx as u16); } }