core/vm: fix create, reject EOF deployment from legacy contracts

This commit is contained in:
Marius van der Wijden 2024-07-02 13:05:33 +02:00
parent 3f038776b6
commit 1a9855486f

View file

@ -567,6 +567,10 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64,
if err == nil && isInitcodeEOF && !hasEOFMagic(ret) {
err = ErrLegacyCode
}
// Reject EOF deployment from legacy.
if err == nil && !isInitcodeEOF && hasEOFMagic(ret) {
err = ErrLegacyCode
}
// Reject code starting with 0xEF if EIP-3541 is enabled.
if err == nil && len(ret) >= 1 && HasEOFByte(ret) {