From: Jack Grigg Date: Fri, 30 Sep 2016 12:16:51 +0000 (+1300) Subject: Disable OP_CODESEPARATOR X-Git-Url: https://repo.jachan.dev/VerusCoin.git/commitdiff_plain/bab187e963dd579f8c495c31c1403d1512b6cbfa Disable OP_CODESEPARATOR --- diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index b83d67d99..ccc989577 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -289,7 +289,8 @@ bool EvalScript(vector >& stack, const CScript& script, un opcode == OP_DIV || opcode == OP_MOD || opcode == OP_LSHIFT || - opcode == OP_RSHIFT) + opcode == OP_RSHIFT || + opcode == OP_CODESEPARATOR) return set_error(serror, SCRIPT_ERR_DISABLED_OPCODE); // Disabled opcodes. if (fExec && 0 <= opcode && opcode <= OP_PUSHDATA4) { @@ -814,13 +815,6 @@ bool EvalScript(vector >& stack, const CScript& script, un popstack(stack); stack.push_back(vchHash); } - break; - - case OP_CODESEPARATOR: - { - // Hash starts after the code separator - pbegincodehash = pc; - } break; case OP_CHECKSIG: @@ -981,27 +975,12 @@ public: fHashSingle((nHashTypeIn & 0x1f) == SIGHASH_SINGLE), fHashNone((nHashTypeIn & 0x1f) == SIGHASH_NONE) {} - /** Serialize the passed scriptCode, skipping OP_CODESEPARATORs */ + /** Serialize the passed scriptCode */ template void SerializeScriptCode(S &s, int nType, int nVersion) const { - CScript::const_iterator it = scriptCode.begin(); - CScript::const_iterator itBegin = it; - opcodetype opcode; - unsigned int nCodeSeparators = 0; - while (scriptCode.GetOp(it, opcode)) { - if (opcode == OP_CODESEPARATOR) - nCodeSeparators++; - } - ::WriteCompactSize(s, scriptCode.size() - nCodeSeparators); - it = itBegin; - while (scriptCode.GetOp(it, opcode)) { - if (opcode == OP_CODESEPARATOR) { - s.write((char*)&itBegin[0], it-itBegin-1); - itBegin = it; - } - } - if (itBegin != scriptCode.end()) - s.write((char*)&itBegin[0], it-itBegin); + auto size = scriptCode.size(); + ::WriteCompactSize(s, size); + s.write((char*)&scriptCode.begin()[0], size); } /** Serialize an input of txTo */