diff options
Diffstat (limited to 'core/vm/stack_table.go')
-rw-r--r-- | core/vm/stack_table.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/core/vm/stack_table.go b/core/vm/stack_table.go new file mode 100644 index 000000000..ce4727a71 --- /dev/null +++ b/core/vm/stack_table.go @@ -0,0 +1,20 @@ +package vm + +import ( + "fmt" + + "github.com/ethereum/go-ethereum/params" +) + +func makeStackFunc(pop, push int) stackValidationFunc { + return func(stack *Stack) error { + if err := stack.require(pop); err != nil { + return err + } + + if push > 0 && int64(stack.len()-pop+push) > params.StackLimit.Int64() { + return fmt.Errorf("stack limit reached %d (%d)", stack.len(), params.StackLimit.Int64()) + } + return nil + } +} |