diff options
Diffstat (limited to 'vendor/github.com/d5/tengo/objects/string.go')
-rw-r--r-- | vendor/github.com/d5/tengo/objects/string.go | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/vendor/github.com/d5/tengo/objects/string.go b/vendor/github.com/d5/tengo/objects/string.go index 6a53b44d..c25b0502 100644 --- a/vendor/github.com/d5/tengo/objects/string.go +++ b/vendor/github.com/d5/tengo/objects/string.go @@ -3,6 +3,7 @@ package objects import ( "strconv" + "github.com/d5/tengo" "github.com/d5/tengo/compiler/token" ) @@ -28,9 +29,16 @@ func (o *String) BinaryOp(op token.Token, rhs Object) (Object, error) { case token.Add: switch rhs := rhs.(type) { case *String: + if len(o.Value)+len(rhs.Value) > tengo.MaxStringLen { + return nil, ErrStringLimit + } return &String{Value: o.Value + rhs.Value}, nil default: - return &String{Value: o.Value + rhs.String()}, nil + rhsStr := rhs.String() + if len(o.Value)+len(rhsStr) > tengo.MaxStringLen { + return nil, ErrStringLimit + } + return &String{Value: o.Value + rhsStr}, nil } } |