CT/CA: Enforce validity of confidential commitments via CConfidentialCommitment::IsValid()

This commit is contained in:
Mark Friedenbach 2017-03-10 04:16:34 -08:00 committed by Gregory Sanders
parent 58c21ae15c
commit 88a31dff93

View file

@ -722,9 +722,7 @@ bool VerifyAmounts(const CCoinsViewCache& cache, const CTransaction& tx, std::ve
{
const CConfidentialValue& val = tx.vout[i].nValue;
const CConfidentialAsset& asset = tx.vout[i].nAsset;
assert(val.vchCommitment.size() == CConfidentialValue::nCommittedSize ||
val.vchCommitment.size() == CConfidentialValue::nExplicitSize);
if (!tx.vout[i].nNonce.IsValid())
if (!asset.IsValid() || !val.IsValid() || !tx.vout[i].nNonce.IsValid())
return false;
if (tx.vout[i].vchRangeproof.size() > 5000)
return false;