From d6196c3971956c050569b87d16b763dbc416db02 Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Thu, 24 Nov 2022 16:25:33 +0300 Subject: [PATCH] [#2095] cli: Do not panic on `object range` Also, includes range parsing error messages enhancement. Signed-off-by: Pavel Karpy --- cmd/frostfs-cli/modules/object/range.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/cmd/frostfs-cli/modules/object/range.go b/cmd/frostfs-cli/modules/object/range.go index 493d74c0..0bace1d0 100644 --- a/cmd/frostfs-cli/modules/object/range.go +++ b/cmd/frostfs-cli/modules/object/range.go @@ -161,12 +161,21 @@ func getRangeList(cmd *cobra.Command) ([]*object.Range, error) { offset, err := strconv.ParseUint(r[0], 10, 64) if err != nil { - return nil, fmt.Errorf("invalid range specifier: %s", vs[i]) + return nil, fmt.Errorf("invalid '%s' range offset specifier: %w", vs[i], err) } length, err := strconv.ParseUint(r[1], 10, 64) if err != nil { - return nil, fmt.Errorf("invalid range specifier: %s", vs[i]) + return nil, fmt.Errorf("invalid '%s' range length specifier: %w", vs[i], err) } + + if length == 0 { + return nil, fmt.Errorf("invalid '%s' range: zero length", vs[i]) + } + + if offset+length <= offset { + return nil, fmt.Errorf("invalid '%s' range: uint64 overflow", vs[i]) + } + rs[i] = object.NewRange() rs[i].SetOffset(offset) rs[i].SetLength(length)