@@ -1030,6 +1030,28 @@ BOOST_AUTO_TEST_CASE(script_PushData)
1030
1030
BOOST_CHECK (EvalScript (pushdata4Stack, CScript (pushdata4, pushdata4 + sizeof (pushdata4)), SCRIPT_VERIFY_P2SH, BaseSignatureChecker (), SigVersion::BASE, &err));
1031
1031
BOOST_CHECK (pushdata4Stack == directStack);
1032
1032
BOOST_CHECK_MESSAGE (err == SCRIPT_ERR_OK, ScriptErrorString (err));
1033
+
1034
+ const std::vector<unsigned char > pushdata1_trunc{OP_PUSHDATA1, 1 };
1035
+ const std::vector<unsigned char > pushdata2_trunc{OP_PUSHDATA2, 1 , 0 };
1036
+ const std::vector<unsigned char > pushdata4_trunc{OP_PUSHDATA4, 1 , 0 , 0 , 0 };
1037
+
1038
+ std::vector<std::vector<unsigned char >> stack_ignore;
1039
+ BOOST_CHECK (!EvalScript (stack_ignore, CScript (pushdata1_trunc.begin (), pushdata1_trunc.end ()), SCRIPT_VERIFY_P2SH, BaseSignatureChecker (), SigVersion::BASE, &err));
1040
+ BOOST_CHECK_EQUAL (err, SCRIPT_ERR_BAD_OPCODE);
1041
+ BOOST_CHECK (!EvalScript (stack_ignore, CScript (pushdata2_trunc.begin (), pushdata2_trunc.end ()), SCRIPT_VERIFY_P2SH, BaseSignatureChecker (), SigVersion::BASE, &err));
1042
+ BOOST_CHECK_EQUAL (err, SCRIPT_ERR_BAD_OPCODE);
1043
+ BOOST_CHECK (!EvalScript (stack_ignore, CScript (pushdata4_trunc.begin (), pushdata4_trunc.end ()), SCRIPT_VERIFY_P2SH, BaseSignatureChecker (), SigVersion::BASE, &err));
1044
+ BOOST_CHECK_EQUAL (err, SCRIPT_ERR_BAD_OPCODE);
1045
+ }
1046
+
1047
+ BOOST_AUTO_TEST_CASE (script_cltv_truncated)
1048
+ {
1049
+ const auto script_cltv_trunc = CScript () << OP_CHECKLOCKTIMEVERIFY;
1050
+
1051
+ std::vector<std::vector<unsigned char >> stack_ignore;
1052
+ ScriptError err;
1053
+ BOOST_CHECK (!EvalScript (stack_ignore, script_cltv_trunc, SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY, BaseSignatureChecker (), SigVersion::BASE, &err));
1054
+ BOOST_CHECK_EQUAL (err, SCRIPT_ERR_INVALID_STACK_OPERATION);
1033
1055
}
1034
1056
1035
1057
static CScript
0 commit comments