From 80da4fd2bbeaa2e71a4a20f8f8d20674a4ee0dc6 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 28 Jun 2024 14:22:05 +0200 Subject: [PATCH] core/vm: fix opDataCopy --- core/vm/eips.go | 2 +- core/vm/gas_table.go | 2 +- core/vm/memory_table.go | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/core/vm/eips.go b/core/vm/eips.go index 4dcee8a56c..4bf6718d9f 100644 --- a/core/vm/eips.go +++ b/core/vm/eips.go @@ -693,7 +693,7 @@ func enableEOF(jt *JumpTable) { dynamicGas: memoryCopierGas(2), minStack: minStack(3, 0), maxStack: maxStack(3, 0), - memorySize: memoryMcopy, + memorySize: memoryDataCopy, } jt[DUPN] = &operation{ execute: opDupN, diff --git a/core/vm/gas_table.go b/core/vm/gas_table.go index 931e09a384..b0e3b70720 100644 --- a/core/vm/gas_table.go +++ b/core/vm/gas_table.go @@ -586,7 +586,7 @@ func gasEOFCreate(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memor if err != nil { return 0, err } - size, overflow := stack.Back(2).Uint64WithOverflow() + size, overflow := stack.Back(3).Uint64WithOverflow() if overflow { return 0, ErrGasUintOverflow } diff --git a/core/vm/memory_table.go b/core/vm/memory_table.go index 206ef6145c..0bbed316e2 100644 --- a/core/vm/memory_table.go +++ b/core/vm/memory_table.go @@ -56,6 +56,10 @@ func memoryMcopy(stack *Stack) (uint64, bool) { return calcMemSize64(mStart, stack.Back(2)) // stack[2]: length } +func memoryDataCopy(stack *Stack) (uint64, bool) { + return calcMemSize64(stack.Back(0), stack.Back(2)) +} + func memoryCreate(stack *Stack) (uint64, bool) { return calcMemSize64(stack.Back(1), stack.Back(2)) } @@ -65,7 +69,7 @@ func memoryCreate2(stack *Stack) (uint64, bool) { } func memoryEOFCreate(stack *Stack) (uint64, bool) { - return calcMemSize64(stack.Back(1), stack.Back(2)) + return calcMemSize64(stack.Back(2), stack.Back(3)) } func memoryReturnContract(stack *Stack) (uint64, bool) {