script: Change SignatureHash input index check to an assert.
In the SignatureHash function, the input index must refer to a valid index. This is not enforced equally in the segwit/non-segwit branches and should be an assertion rather than returning a error hash.
This commit is contained in:
parent
ef8340d25f
commit
5ddf56045a
1 changed files with 2 additions and 4 deletions
|
@ -1175,6 +1175,8 @@ PrecomputedTransactionData::PrecomputedTransactionData(const CTransaction& txTo)
|
||||||
|
|
||||||
uint256 SignatureHash(const CScript& scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType, const CAmount& amount, SigVersion sigversion, const PrecomputedTransactionData* cache)
|
uint256 SignatureHash(const CScript& scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType, const CAmount& amount, SigVersion sigversion, const PrecomputedTransactionData* cache)
|
||||||
{
|
{
|
||||||
|
assert(nIn < txTo.vin.size());
|
||||||
|
|
||||||
if (sigversion == SIGVERSION_WITNESS_V0) {
|
if (sigversion == SIGVERSION_WITNESS_V0) {
|
||||||
uint256 hashPrevouts;
|
uint256 hashPrevouts;
|
||||||
uint256 hashSequence;
|
uint256 hashSequence;
|
||||||
|
@ -1221,10 +1223,6 @@ uint256 SignatureHash(const CScript& scriptCode, const CTransaction& txTo, unsig
|
||||||
}
|
}
|
||||||
|
|
||||||
static const uint256 one(uint256S("0000000000000000000000000000000000000000000000000000000000000001"));
|
static const uint256 one(uint256S("0000000000000000000000000000000000000000000000000000000000000001"));
|
||||||
if (nIn >= txTo.vin.size()) {
|
|
||||||
// nIn out of range
|
|
||||||
return one;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for invalid use of SIGHASH_SINGLE
|
// Check for invalid use of SIGHASH_SINGLE
|
||||||
if ((nHashType & 0x1f) == SIGHASH_SINGLE) {
|
if ((nHashType & 0x1f) == SIGHASH_SINGLE) {
|
||||||
|
|
Loading…
Reference in a new issue