From 5b75c477841fa463aad9c6e6d95a98b50ce14dd3 Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Tue, 30 May 2017 15:42:10 -0700 Subject: Add a valid opcode sanity check to CScript Added a function in CScript that checks if the script contains valid opcodes. Add a test for that function --- src/script/script.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/script/script.h') diff --git a/src/script/script.h b/src/script/script.h index 95a5999a1..25b80ef62 100644 --- a/src/script/script.h +++ b/src/script/script.h @@ -630,6 +630,9 @@ public: bool IsPushOnly(const_iterator pc) const; bool IsPushOnly() const; + /** Check if the script contains valid OP_CODES */ + bool HasValidOps() const; + /** * Returns whether the script is guaranteed to fail at execution, * regardless of the initial stack. This allows outputs to be pruned -- cgit v1.2.3 From ac4e438229134595e949bfedb1f487c71fd45d24 Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Tue, 30 May 2017 15:43:07 -0700 Subject: Sanity check transaction scripts in DecodeHexTx Make sure that the scripts of decoded transactions are valid scripts. --- src/script/script.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/script/script.h') diff --git a/src/script/script.h b/src/script/script.h index 25b80ef62..23706b982 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 -- cgit v1.2.3