Sanity check transaction scripts in DecodeHexTx

Make sure that the scripts of decoded transactions are valid scripts.
This commit is contained in:
Andrew Chow
2017-05-30 15:43:07 -07:00
parent 5b75c47784
commit ac4e438229
3 changed files with 31 additions and 4 deletions

View File

@ -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;
}
}

View File

@ -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