From b1c67764298060992f8b2e3de5970c21f564934e Mon Sep 17 00:00:00 2001 From: Christoph Jentzsch Date: Thu, 13 Nov 2014 23:20:03 +0100 Subject: [PATCH] Fix stackoverflow bug in VM --- libevm/VM.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libevm/VM.h b/libevm/VM.h index d495b6289..5c153a6ea 100644 --- a/libevm/VM.h +++ b/libevm/VM.h @@ -206,7 +206,9 @@ template dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con { unsigned n = (unsigned)inst - (unsigned)Instruction::LOG0; require(n + 2); - runGas = c_logGas + c_logTopicGas * n + c_logDataGas * m_stack[m_stack.size() - 2]; + runGas = m_stack[m_stack.size() - 2]; + runGas *= c_logDataGas; + runGas += c_logGas + c_logTopicGas * n; newTempSize = memNeed(m_stack[m_stack.size() - 1], m_stack[m_stack.size() - 2]); break; } @@ -214,7 +216,8 @@ template dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con case Instruction::CALL: case Instruction::CALLCODE: require(7); - runGas = c_callGas + m_stack[m_stack.size() - 1]; + runGas = m_stack[m_stack.size() - 1]; + runGas += c_callGas; newTempSize = std::max(memNeed(m_stack[m_stack.size() - 6], m_stack[m_stack.size() - 7]), memNeed(m_stack[m_stack.size() - 4], m_stack[m_stack.size() - 5])); break;