diff --git a/src/policy/policy.cpp b/src/policy/policy.cpp index 0190a45d65..06863e879c 100644 --- a/src/policy/policy.cpp +++ b/src/policy/policy.cpp @@ -120,8 +120,14 @@ bool AreInputsStandard(const CTransaction& tx, const CCoinsViewCache& mapInputs) { const CTxOut& prev = mapInputs.GetOutputFor(tx.vin[i]); - if (prev.scriptPubKey.IsWithdrawLock()) + if (prev.scriptPubKey.IsWithdrawLock()) { + if (!tx.vin[i].scriptSig.IsWithdrawProof()) { + if (tx.vout.size() < i) + if (!tx.vout[i].nValue.IsAmount() || tx.vout[i].nValue.GetAmount() > MAX_MONEY / 100) + return false; + } continue; + } // Biggest 'standard' txin is a 15-of-15 P2SH multisig with compressed // keys. (remember the 520 byte limit on redeemScript size) That works