Skip to content

Commit fbdefd1

Browse files
committed
f make inputs and outputs total value calcs overflow-safe
1 parent 71f1002 commit fbdefd1

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

lightning/src/ln/interactivetxs.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,15 @@ impl NegotiationContext {
305305
// MUST fail the negotiation if:
306306

307307
// - the peer's total input satoshis is less than their outputs
308-
let counterparty_inputs_value: u64 =
309-
self.counterparty_inputs_contributed().map(|input| input.prev_output.value).sum();
310-
let counterparty_outputs_value =
311-
self.counterparty_outputs_contributed().map(|output| output.value).sum();
308+
let mut counterparty_inputs_value: u64 = 0;
309+
let mut counterparty_outputs_value: u64 = 0;
310+
for input in self.counterparty_inputs_contributed() {
311+
counterparty_inputs_value =
312+
counterparty_inputs_value.saturating_add(input.prev_output.value);
313+
}
314+
for output in self.counterparty_outputs_contributed() {
315+
counterparty_outputs_value = counterparty_outputs_value.saturating_add(output.value);
316+
}
312317
if counterparty_inputs_value < counterparty_outputs_value {
313318
return Err(AbortReason::OutputsValueExceedsInputsValue);
314319
}

0 commit comments

Comments
 (0)