mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 12:46:44 +00:00
Handle return memory of size 0 and large offset
This commit is contained in:
parent
98a30815ac
commit
858273bc89
1 changed files with 4 additions and 2 deletions
|
|
@ -24,8 +24,10 @@ bytes Runtime::getReturnData() const // FIXME: Reconsider returning by copy
|
||||||
auto offset = static_cast<size_t>(llvm2eth(m_data.elems[RuntimeData::ReturnDataOffset]));
|
auto offset = static_cast<size_t>(llvm2eth(m_data.elems[RuntimeData::ReturnDataOffset]));
|
||||||
auto size = static_cast<size_t>(llvm2eth(m_data.elems[RuntimeData::ReturnDataSize]));
|
auto size = static_cast<size_t>(llvm2eth(m_data.elems[RuntimeData::ReturnDataSize]));
|
||||||
|
|
||||||
assert(offset + size <= m_memory.size());
|
assert(offset + size <= m_memory.size() || size == 0);
|
||||||
// TODO: Handle invalid data access by returning empty ref
|
if (offset + size > m_memory.size())
|
||||||
|
return {};
|
||||||
|
|
||||||
auto dataBeg = m_memory.begin() + offset;
|
auto dataBeg = m_memory.begin() + offset;
|
||||||
return {dataBeg, dataBeg + size};
|
return {dataBeg, dataBeg + size};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue