From 31d5960f008c15d8730bb040d01f7ec466b63701 Mon Sep 17 00:00:00 2001 From: chrislu Date: Thu, 4 Sep 2025 08:08:36 -0700 Subject: [PATCH] int overflow --- weed/query/engine/string_functions.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/weed/query/engine/string_functions.go b/weed/query/engine/string_functions.go index 26acd8f4e..efd1cfcb1 100644 --- a/weed/query/engine/string_functions.go +++ b/weed/query/engine/string_functions.go @@ -2,6 +2,7 @@ package engine import ( "fmt" + "math" "strings" "github.com/seaweedfs/seaweedfs/weed/pb/schema_pb" @@ -265,14 +266,14 @@ func (e *SQLEngine) Left(value *schema_pb.Value, length *schema_pb.Value) (*sche }, nil } - if int(lengthVal) >= len(str) { + if lengthVal > int64(len(str)) || lengthVal > int64(math.MaxInt) { return &schema_pb.Value{ Kind: &schema_pb.Value_StringValue{StringValue: str}, }, nil } return &schema_pb.Value{ - Kind: &schema_pb.Value_StringValue{StringValue: str[:lengthVal]}, + Kind: &schema_pb.Value_StringValue{StringValue: str[:int(lengthVal)]}, }, nil } @@ -298,7 +299,7 @@ func (e *SQLEngine) Right(value *schema_pb.Value, length *schema_pb.Value) (*sch }, nil } - if int(lengthVal) >= len(str) { + if lengthVal > int64(len(str)) || lengthVal > int64(math.MaxInt) { return &schema_pb.Value{ Kind: &schema_pb.Value_StringValue{StringValue: str}, }, nil