From ee8d477b88382a6d3eb9a2d1dbdb05ad2bf5b21a Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 30 Aug 2024 12:50:26 +0200 Subject: [PATCH] core/vm: fix backward jump validation --- core/vm/validate_linear.go | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/core/vm/validate_linear.go b/core/vm/validate_linear.go index 8bbc7e07e8..f5e7b18576 100644 --- a/core/vm/validate_linear.go +++ b/core/vm/validate_linear.go @@ -163,7 +163,6 @@ func validateControlFlow2(code []byte, section int, metadata []*FunctionMetadata if nextPC >= len(code) { return 0, fmt.Errorf("%w: end with %s, pos %d", ErrInvalidCodeTermination, op, pos) } - nextOP := code[nextPC] if nextPC > pos { // target reached via forward jump or seq flow nextBounds, ok := stackBounds[nextPC] @@ -176,15 +175,9 @@ func validateControlFlow2(code []byte, section int, metadata []*FunctionMetadata // target reached via backwards jump nextBounds, ok := stackBounds[nextPC] if !ok { + fmt.Print("2") return 0, ErrInvalidBackwardJump } - change := int(params.StackLimit) - jt[nextOP].maxStack + jt[nextOP].minStack - if have, want := nextBounds.max+change, currentBounds.max; have < want { - return 0, fmt.Errorf("%w want %d as max got %d at pos %d,", ErrInvalidBackwardJump, want, have, pos) - } - if have, want := nextBounds.min+change, currentBounds.min; have < want { - return 0, fmt.Errorf("%w want %d as min got %d at pos %d,", ErrInvalidBackwardJump, want, have, pos) - } if currentStackMax != nextBounds.max { return 0, fmt.Errorf("%w want %d as current max got %d at pos %d,", ErrInvalidBackwardJump, currentStackMax, nextBounds.max, pos) }