Merge pull request #60 from shemnon/eof/extcodecopy-oob

Limit EXTCODECOPY to eof bytes
This commit is contained in:
Marius van der Wijden 2025-02-04 09:44:21 +01:00 committed by GitHub
commit f0dc433e31
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -395,6 +395,7 @@ func opExtCodeCopy(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext)
codeOffset = stack.pop() codeOffset = stack.pop()
length = stack.pop() length = stack.pop()
lengthU64 = length.Uint64() lengthU64 = length.Uint64()
codeCopy []byte
) )
uint64CodeOffset, overflow := codeOffset.Uint64WithOverflow() uint64CodeOffset, overflow := codeOffset.Uint64WithOverflow()
if overflow { if overflow {
@ -406,9 +407,10 @@ func opExtCodeCopy(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext)
witness.AddCode(code) witness.AddCode(code)
} }
if isEOFVersion1(code) { if isEOFVersion1(code) {
lengthU64 = 2 codeCopy = getData(eofMagic, uint64CodeOffset, lengthU64)
} else {
codeCopy = getData(code, uint64CodeOffset, lengthU64)
} }
codeCopy := getData(code, uint64CodeOffset, lengthU64)
scope.Memory.Set(memOffset.Uint64(), lengthU64, codeCopy) scope.Memory.Set(memOffset.Uint64(), lengthU64, codeCopy)
return nil, nil return nil, nil