From: Jeff Garzik Date: Sun, 22 Apr 2012 17:44:12 +0000 (-0400) Subject: Test ScriptSigArgsExpected() for error, before accumulating return value X-Git-Tag: v0.4.0-unstable~129^2~1^2~18^2~9 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=07d1a50aee407bcdc32c884801290ee2724637ea Test ScriptSigArgsExpected() for error, before accumulating return value --- diff --git a/src/main.cpp b/src/main.cpp index 2473662..1bb64a6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -304,6 +304,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 @@ -325,10 +327,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; }