Skip to content

Commit 2ea36bf

Browse files
committed
Merge c977f2b into merged_master (Elements PR ElementsProject#664)
2 parents 7e90d50 + c977f2b commit 2ea36bf

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/consensus/tx_verify.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ int64_t GetTransactionSigOpCost(const CTransaction& tx, const CCoinsViewCache& i
162162
CTxOut prevout;
163163
if (tx.vin[i].m_is_pegin) {
164164
std::string err;
165-
if (tx.witness.vtxinwit.size() <= i || !IsValidPeginWitness(tx.witness.vtxinwit[i].m_pegin_witness, tx.vin[i].prevout, err, true)) {
165+
// Make sure witness exists and is properly formatted
166+
if (tx.witness.vtxinwit.size() != tx.vin.size() || !IsValidPeginWitness(tx.witness.vtxinwit[i].m_pegin_witness, tx.vin[i].prevout, err, false)) {
166167
continue;
167168
}
168169
prevout = GetPeginOutputFromWitness(tx.witness.vtxinwit[i].m_pegin_witness);

src/validation.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -557,11 +557,10 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool
557557
// This only checks the UTXO set for already claimed pegins. For mempool conflicts,
558558
// we rely on the GetConflictTx check done above.
559559
if (txin.m_is_pegin) {
560-
// Quick sanity check on witness first.
561-
if (tx.witness.vtxinwit.size() <= i ||
562-
tx.witness.vtxinwit[i].m_pegin_witness.stack.size() < 6 ||
563-
uint256(tx.witness.vtxinwit[i].m_pegin_witness.stack[2]).IsNull() ||
564-
tx.vin[i].prevout.hash.IsNull()) {
560+
// Peg-in witness is required, check here without validating existence in parent chain
561+
std::string err_msg = "no peg-in witness attached";
562+
if (tx.witness.vtxinwit.size() != tx.vin.size() ||
563+
!IsValidPeginWitness(tx.witness.vtxinwit[i].m_pegin_witness, tx.vin[i].prevout, err_msg, false)) {
565564
return state.Invalid(ValidationInvalidReason::TX_WITNESS_MUTATED, false, REJECT_INVALID, "pegin-no-witness");
566565
}
567566

0 commit comments

Comments
 (0)