From 109184fb2c143810fd825d48a294ebe8eb9c9b36 Mon Sep 17 00:00:00 2001 From: cl507523 Date: Fri, 23 Jan 2026 08:48:42 +0000 Subject: [PATCH] fix(evm): fix SAR opcode with large shift --- src/evm/opcode_handlers.cpp | 2 +- tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/evm/opcode_handlers.cpp b/src/evm/opcode_handlers.cpp index 23141457f..75d9f5f83 100644 --- a/src/evm/opcode_handlers.cpp +++ b/src/evm/opcode_handlers.cpp @@ -344,7 +344,7 @@ void SarHandler::doExecute() { } } else { intx::uint256 IsNegative = (Value >> 255) & 1; - Res = IsNegative ? intx::uint256(-1) : intx::uint256(0); + Res = IsNegative ? ~intx::uint256(0) : intx::uint256(0); } Frame->push(Res); } diff --git a/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt b/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt index 297530314..a5f7e8fa6 100644 --- a/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt +++ b/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt @@ -203,3 +203,4 @@ multi_vm/evm.storage/external_vm multi_vm/evm.exp/external_vm multi_vm/evm.exp_oog/external_vm multi_vm/evm.exp_pre_spurious_dragon/external_vm +multi_vm/evm.shift_overflow/external_vm