From d6534199e5261bac85e8b48aace2cf7b4b6cf041 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Wed, 1 Feb 2023 15:04:24 -0500 Subject: [PATCH] HACK: script: Treat OP_FALSE OP_IF sequence as a policy violation ("upgradable nop") --- src/script/interpreter.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index 11b1a1c887..9c0201d8c4 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -504,6 +504,14 @@ bool EvalScript(std::vector >& stack, const CScript& return set_error(serror, SCRIPT_ERR_MINIMALDATA); } stack.push_back(vchPushValue); + if ((flags & SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS) && opcode == OP_FALSE) { + auto pc_tmp = pc; + opcodetype next_opcode; + valtype dummy_data; + if (script.GetOp(pc_tmp, next_opcode, dummy_data) && next_opcode == OP_IF) { + return set_error(serror, SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS); + } + } } else if (fExec || (OP_IF <= opcode && opcode <= OP_ENDIF)) switch (opcode) { -- 2.39.2