From 38f2973f9f42c467847295ed9d81f052b8d149b5 Mon Sep 17 00:00:00 2001 From: Linda Guiga Date: Fri, 11 Oct 2024 18:46:04 +0100 Subject: [PATCH] Fix check against 0xEF byte --- .../src/cpu/kernel/asm/core/process_txn.asm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/evm_arithmetization/src/cpu/kernel/asm/core/process_txn.asm b/evm_arithmetization/src/cpu/kernel/asm/core/process_txn.asm index 07926b85a..28252d012 100644 --- a/evm_arithmetization/src/cpu/kernel/asm/core/process_txn.asm +++ b/evm_arithmetization/src/cpu/kernel/asm/core/process_txn.asm @@ -188,11 +188,15 @@ global process_contract_creation_txn_after_constructor: ISZERO %jumpi(contract_creation_fault_3) - // EIP-3541: Reject new contract code starting with the 0xEF byte + // EIP-3541: Reject new contract code starting with the 0xEF byte, if code_size > 0 + %returndatasize // size of the code + DUP1 ISZERO + // stack: code_size == 0, code_size, leftover_gas, new_ctx, address, retdest, success + %jumpi(process_contract_creation_txn_after_ef_check) + // stack: code_size, leftover_gas, new_ctx, address, retdest, success PUSH 0 %mload_current(@SEGMENT_RETURNDATA) %eq_const(0xEF) %jumpi(contract_creation_fault_3_zero_leftover) - // stack: leftover_gas, new_ctx, address, retdest, success - %returndatasize // Size of the code. +process_contract_creation_txn_after_ef_check: // stack: code_size, leftover_gas, new_ctx, address, retdest, success DUP1 %gt_const(@MAX_CODE_SIZE) %jumpi(contract_creation_fault_4) // stack: code_size, leftover_gas, new_ctx, address, retdest, success @@ -487,8 +491,8 @@ contract_creation_fault_3: contract_creation_fault_3_zero_leftover: %revert_checkpoint - // stack: leftover_gas, new_ctx, address, retdest, success - %pop3 + // stack: code_size, leftover_gas, new_ctx, address, retdest, success + %pop4 PUSH 0 // leftover gas // stack: leftover_gas, retdest, success %pay_coinbase_and_refund_sender