script: prevent UB when computing abs value for num opcode serialize

This commit is contained in:
pierrenn
2020-04-08 15:10:28 +09:00
parent 1b151e3ffc
commit 2748e87932
3 changed files with 3 additions and 11 deletions

View File

@@ -135,11 +135,7 @@ void test_one_input(const std::vector<uint8_t>& buffer)
const CScriptNum script_num{i64};
(void)script_num.getint();
// Avoid negation failure:
// script/script.h:332:35: runtime error: negation of -9223372036854775808 cannot be represented in type 'int64_t' (aka 'long'); cast to an unsigned type to negate this value to itself
if (script_num != CScriptNum{std::numeric_limits<int64_t>::min()}) {
(void)script_num.getvch();
}
(void)script_num.getvch();
const arith_uint256 au256 = UintToArith256(u256);
assert(ArithToUint256(au256) == u256);