Test ScriptSigArgsExpected() for error, before accumulating return value

This commit is contained in:
Jeff Garzik 2012-04-22 13:44:12 -04:00 committed by Jeff Garzik
parent 7bd9c3a3cf
commit c0a0a93d02

View File

@ -297,6 +297,8 @@ bool CTransaction::AreInputsStandard(const MapPrevTx& mapInputs) const
if (!Solver(prevScript, whichType, vSolutions))
return false;
int nArgsExpected = ScriptSigArgsExpected(whichType, vSolutions);
if (nArgsExpected < 0)
return false;
// Transactions with extra stuff in their scriptSigs are
// non-standard. Note that this EvalScript() call will
@ -318,10 +320,15 @@ bool CTransaction::AreInputsStandard(const MapPrevTx& mapInputs) const
return false;
if (whichType2 == TX_SCRIPTHASH)
return false;
nArgsExpected += ScriptSigArgsExpected(whichType2, vSolutions2);
int tmpExpected;
tmpExpected = ScriptSigArgsExpected(whichType2, vSolutions2);
if (tmpExpected < 0)
return false;
nArgsExpected += tmpExpected;
}
if (stack.size() != nArgsExpected)
if (stack.size() != (unsigned int)nArgsExpected)
return false;
}