From: Matt Corallo Date: Thu, 30 Aug 2018 16:35:52 +0000 (-0400) Subject: Fix crash that #127 intended to fix but did not completely fix X-Git-Tag: v0.0.12~333^2~1 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=794212bb236b40b0ac33bffc7dbcdca45f4f626f;p=rust-lightning Fix crash that #127 intended to fix but did not completely fix Introduced in #124, and found by fuzzer --- diff --git a/src/ln/channel.rs b/src/ln/channel.rs index f890f0396..14a5589e7 100644 --- a/src/ln/channel.rs +++ b/src/ln/channel.rs @@ -1133,9 +1133,6 @@ impl Channel { let mut htlc_amount_msat = 0; for htlc in self.pending_htlcs.iter_mut() { if !htlc.outbound && htlc.payment_hash == *payment_hash_arg { - if htlc_id != 0 { - panic!("Duplicate HTLC payment_hash, you probably re-used payment preimages, NEVER DO THIS!"); - } if htlc.state == HTLCState::Committed { htlc.state = HTLCState::LocalRemoved; } else if htlc.state == HTLCState::RemoteAnnounced { @@ -1152,6 +1149,9 @@ impl Channel { } else { panic!("Have an inbound HTLC when not awaiting remote revoke that had a garbage state"); } + if htlc_id != 0 { + panic!("Duplicate HTLC payment_hash, you probably re-used payment preimages, NEVER DO THIS!"); + } htlc_id = htlc.htlc_id; htlc_amount_msat += htlc.amount_msat; }