diff options
author | Andrew Chow <achow101-github@achow101.com> | 2017-05-30 15:43:07 -0700 |
---|---|---|
committer | Andrew Chow <achow101-github@achow101.com> | 2017-06-07 14:07:26 -0700 |
commit | ac4e438229134595e949bfedb1f487c71fd45d24 (patch) | |
tree | 08114ad8a0bd5616c83fd10d2a0db4f091b2e09b /src/script | |
parent | 5b75c477841fa463aad9c6e6d95a98b50ce14dd3 (diff) |
Sanity check transaction scripts in DecodeHexTx
Make sure that the scripts of decoded transactions are valid scripts.
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/script.cpp | 3 | ||||
-rw-r--r-- | src/script/script.h | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/script/script.cpp b/src/script/script.cpp index a71fee19cf..a10b619f7d 100644 --- a/src/script/script.cpp +++ b/src/script/script.cpp @@ -273,7 +273,8 @@ bool CScript::HasValidOps() const CScript::const_iterator it = begin(); while (it < end()) { opcodetype opcode; - if (!GetOp(it, opcode) || opcode > 0xb9) { + std::vector<unsigned char> item; + if (!GetOp(it, opcode, item) || opcode > MAX_OPCODE || item.size() > MAX_SCRIPT_ELEMENT_SIZE) { return false; } } diff --git a/src/script/script.h b/src/script/script.h index 25b80ef62b..23706b9826 100644 --- a/src/script/script.h +++ b/src/script/script.h @@ -190,6 +190,9 @@ enum opcodetype OP_INVALIDOPCODE = 0xff, }; +// Maximum value that an opcode can be +static const unsigned int MAX_OPCODE = OP_NOP10; + const char* GetOpName(opcodetype opcode); class scriptnum_error : public std::runtime_error |