From 0731c3ae7a471d420a17777bb34261b76f19efdb Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Wed, 26 Feb 2014 17:00:21 +0000 Subject: [PATCH] Hash instructions require at least one on stack. --- libethereum/VM.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libethereum/VM.h b/libethereum/VM.h index 6e97d5497..caafc64b0 100644 --- a/libethereum/VM.h +++ b/libethereum/VM.h @@ -264,6 +264,7 @@ template void eth::VM::go(Ext& _ext, uint64_t _steps) break; case Instruction::SHA256: { + require(1); uint s = (uint)std::min(m_stack.back(), (u256)(m_stack.size() - 1) * 32); m_stack.pop_back(); @@ -282,6 +283,7 @@ template void eth::VM::go(Ext& _ext, uint64_t _steps) } case Instruction::RIPEMD160: { + require(1); uint s = (uint)std::min(m_stack.back(), (u256)(m_stack.size() - 1) * 32); m_stack.pop_back(); @@ -419,6 +421,7 @@ template void eth::VM::go(Ext& _ext, uint64_t _steps) } case Instruction::SHA3: { + require(1); uint s = (uint)std::min(m_stack.back(), (u256)(m_stack.size() - 1) * 32); m_stack.pop_back();