Merge #14248: [0.17] Fix crash bug with duplicate inputs within a transaction
0d49c82edd
[qa] backport: Test for duplicate inputs within a transaction (Suhas Daftuar)833180f538
Fix crash bug with duplicate inputs within a transaction (Suhas Daftuar) Pull request description: This is a backport of #14247. Tree-SHA512: 4d3b6244d501a48f56a728c571dac9a346019a671434edac943f4f535ef8f94ec6bfd569a0585ad5e23a6e488ecd7e0079510cbb10a2a22f576eb36d73accb0c
This commit is contained in:
commit
c64128df58
2 changed files with 11 additions and 1 deletions
|
@ -3130,7 +3130,7 @@ bool CheckBlock(const CBlock& block, CValidationState& state, const Consensus::P
|
|||
|
||||
// Check transactions
|
||||
for (const auto& tx : block.vtx)
|
||||
if (!CheckTransaction(*tx, state, false))
|
||||
if (!CheckTransaction(*tx, state, true))
|
||||
return state.Invalid(false, state.GetRejectCode(), state.GetRejectReason(),
|
||||
strprintf("Transaction check failed (tx hash %s) %s", tx->GetHash().ToString(), state.GetDebugMessage()));
|
||||
|
||||
|
|
|
@ -81,6 +81,16 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
|
|||
|
||||
node.p2p.send_blocks_and_test([block2], node, False, False, 16, b'bad-txns-duplicate')
|
||||
|
||||
# Check transactions for duplicate inputs
|
||||
self.log.info("Test duplicate input block.")
|
||||
|
||||
block2_orig.vtx[2].vin.append(block2_orig.vtx[2].vin[0])
|
||||
block2_orig.vtx[2].rehash()
|
||||
block2_orig.hashMerkleRoot = block2_orig.calc_merkle_root()
|
||||
block2_orig.rehash()
|
||||
block2_orig.solve()
|
||||
node.p2p.send_blocks_and_test([block2_orig], node, success=False, request_block=False, reject_reason=b'bad-txns-inputs-duplicate')
|
||||
|
||||
self.log.info("Test very broken block.")
|
||||
|
||||
block3 = create_block(tip, create_coinbase(height), block_time)
|
||||
|
|
Loading…
Reference in a new issue