diff options
author | Jim Posen <jimpo@coinbase.com> | 2017-09-27 19:49:18 -0700 |
---|---|---|
committer | Jim Posen <jimpo@coinbase.com> | 2017-09-27 19:49:18 -0700 |
commit | 5ddf56045ad65162c7cd5c757c81d9446299a5aa (patch) | |
tree | 858a75ffe10592458f7f15608c1a3289da97faf6 /src/script | |
parent | ef8340d25f7c5dd5682bdecea97ce84cfce1493c (diff) | |
download | bitcoin-5ddf56045ad65162c7cd5c757c81d9446299a5aa.tar.xz |
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.
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/interpreter.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index 7315500e3b..77314e8cb2 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -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) { + assert(nIn < txTo.vin.size()); + if (sigversion == SIGVERSION_WITNESS_V0) { uint256 hashPrevouts; uint256 hashSequence; @@ -1221,10 +1223,6 @@ uint256 SignatureHash(const CScript& scriptCode, const CTransaction& txTo, unsig } static const uint256 one(uint256S("0000000000000000000000000000000000000000000000000000000000000001")); - if (nIn >= txTo.vin.size()) { - // nIn out of range - return one; - } // Check for invalid use of SIGHASH_SINGLE if ((nHashType & 0x1f) == SIGHASH_SINGLE) { |