From 07e32e7708a10b349c949bf3cf51cf590430cba7 Mon Sep 17 00:00:00 2001 From: Aleksey Akulovich Date: Thu, 28 Dec 2023 17:04:42 +0400 Subject: [PATCH] feat: check for too big option.PipelineMultiplex value (#436) --- rueidis.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rueidis.go b/rueidis.go index 7e2a2544..fa9545d2 100644 --- a/rueidis.go +++ b/rueidis.go @@ -30,6 +30,8 @@ const ( DefaultReadBuffer = 1 << 19 // DefaultWriteBuffer is the default value of bufio.NewWriterSize for each connection, which is 0.5MiB DefaultWriteBuffer = 1 << 19 + // MaxPipelineMultiplex is the maximum meaningful value for ClientOption.PipelineMultiplex + MaxPipelineMultiplex = 8 ) var ( @@ -46,6 +48,8 @@ var ( // ErrReplicaOnlyNotSupported means ReplicaOnly flag is not supported by // current client ErrReplicaOnlyNotSupported = errors.New("ReplicaOnly is not supported for single client") + // ErrWrongPipelineMultiplex means wrong value for ClientOption.PipelineMultiplex + ErrWrongPipelineMultiplex = errors.New("ClientOption.PipelineMultiplex must not be bigger than MaxPipelineMultiplex") ) // ClientOption should be passed to NewClient to construct a Client @@ -314,6 +318,9 @@ func NewClient(option ClientOption) (client Client, err error) { option.InitAddress[i], option.InitAddress[j] = option.InitAddress[j], option.InitAddress[i] }) } + if option.PipelineMultiplex > MaxPipelineMultiplex { + return nil, ErrWrongPipelineMultiplex + } if option.Sentinel.MasterSet != "" { option.PipelineMultiplex = singleClientMultiplex(option.PipelineMultiplex) return newSentinelClient(&option, makeConn)