From 9838a367aeac9e502c7ece5bd2ac854fccc6f377 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Thu, 8 Jun 2023 12:59:38 +0200 Subject: [PATCH] Check call depth in create (#1089) --- evm/src/cpu/kernel/asm/core/create.asm | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/evm/src/cpu/kernel/asm/core/create.asm b/evm/src/cpu/kernel/asm/core/create.asm index e6797c93..60a15036 100644 --- a/evm/src/cpu/kernel/asm/core/create.asm +++ b/evm/src/cpu/kernel/asm/core/create.asm @@ -70,7 +70,11 @@ global create_common: // stack: address, value, code_offset, code_len, kexit_info DUP1 %insert_accessed_addresses_no_return - // TODO: Check call stack depth. + // Check call depth + %call_depth + %gt_const(@CALL_STACK_LIMIT) + %jumpi(create_too_deep) + // stack: address, value, code_offset, code_len, kexit_info DUP2 %selfbalance LT %jumpi(create_insufficient_balance) // Increment the sender's nonce. @@ -220,6 +224,12 @@ create_oog: %stack (code_size_cost, leftover_gas, success, address, kexit_info) -> (kexit_info, 0) EXIT_KERNEL +create_too_deep: + %mstore_context_metadata(@CTX_METADATA_RETURNDATA_SIZE, 0) + %stack (address, value, code_offset, code_len, kexit_info) -> (kexit_info, 0) + // stack: kexit_info, 0 + EXIT_KERNEL + %macro set_codehash %stack (addr, codehash) -> (addr, codehash, %%after) %jump(set_codehash)