From ded1a739a9d0f5d2d7317156401ba17f100f7544 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Sat, 25 Jul 2015 21:31:06 +0200 Subject: [PATCH] SHA3 gas calc should use bigint to avoid overflow. Fixes #2582. --- libevm/VM.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libevm/VM.cpp b/libevm/VM.cpp index f95481c54..9d89ce497 100644 --- a/libevm/VM.cpp +++ b/libevm/VM.cpp @@ -103,7 +103,7 @@ void VM::checkRequirements(u256& io_gas, ExtVMFace& _ext, OnOpFunc const& _onOp, newTempSize = memNeed(m_stack.back(), m_stack[m_stack.size() - 2]); break; case Instruction::SHA3: - runGas = c_sha3Gas + (m_stack[m_stack.size() - 2] + 31) / 32 * c_sha3WordGas; + runGas = c_sha3Gas + ((bigint)m_stack[m_stack.size() - 2] + 31) / 32 * c_sha3WordGas; newTempSize = memNeed(m_stack.back(), m_stack[m_stack.size() - 2]); break; case Instruction::CALLDATACOPY: