mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 23:08:36 +01:00
Abort if we add a duplicate input
This commit is contained in:
parent
ebd57c5d53
commit
62d4952348
1 changed files with 6 additions and 3 deletions
|
@ -308,7 +308,10 @@ impl NegotiationContext {
|
|||
};
|
||||
let prev_output =
|
||||
tx.output.get(msg.prevtx_out as usize).ok_or(AbortReason::PrevTxOutInvalid)?.clone();
|
||||
self.prevtx_outpoints.insert(input.previous_output);
|
||||
if !self.prevtx_outpoints.insert(input.previous_output) {
|
||||
// We have added an input that already exists
|
||||
return Err(AbortReason::PrevTxOutInvalid);
|
||||
}
|
||||
self.inputs.insert(msg.serial_id, TxInputWithPrevOutput { input, prev_output });
|
||||
Ok(())
|
||||
}
|
||||
|
@ -1253,7 +1256,7 @@ mod tests {
|
|||
outputs_a: generate_outputs(&[1_000_000]),
|
||||
inputs_b: vec![],
|
||||
outputs_b: vec![],
|
||||
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeA)),
|
||||
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeB)),
|
||||
});
|
||||
// Non-initiator uses same prevout as initiator.
|
||||
let duplicate_input = TxIn {
|
||||
|
@ -1266,7 +1269,7 @@ mod tests {
|
|||
outputs_a: generate_outputs(&[1_000_000]),
|
||||
inputs_b: vec![(duplicate_input.clone(), tx.clone())],
|
||||
outputs_b: vec![],
|
||||
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeB)),
|
||||
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeA)),
|
||||
});
|
||||
// Initiator sends too many TxAddInputs
|
||||
do_test_interactive_tx_constructor(TestSession {
|
||||
|
|
Loading…
Add table
Reference in a new issue