From dee94ea699002b0e682b24227ca09c359fd4a2d7 Mon Sep 17 00:00:00 2001 From: Simon Brakhane Date: Thu, 6 Jul 2023 11:06:34 +0200 Subject: [PATCH] bugfix: do not try to parse empty ranges An empty range caused a panic as parseOptionIDs tried to check further down for an @ at index 0 without taking into account that the splitted out string could be empty. Signed-off-by: Simon Brakhane --- libpod/container_internal_common.go | 4 ++++ libpod/container_internal_test.go | 3 +++ 2 files changed, 7 insertions(+) diff --git a/libpod/container_internal_common.go b/libpod/container_internal_common.go index 7dfceac8a6..87794eeba7 100644 --- a/libpod/container_internal_common.go +++ b/libpod/container_internal_common.go @@ -65,6 +65,10 @@ func parseOptionIDs(ctrMappings []idtools.IDMap, option string) ([]idtools.IDMap for i, m := range ranges { var v idtools.IDMap + if m == "" { + return nil, fmt.Errorf("invalid empty range for %q", option) + } + relative := false if m[0] == '@' { relative = true diff --git a/libpod/container_internal_test.go b/libpod/container_internal_test.go index 1c096d1d16..4fb95e95e4 100644 --- a/libpod/container_internal_test.go +++ b/libpod/container_internal_test.go @@ -70,6 +70,9 @@ func TestParseOptionIDs(t *testing.T) { _, err = parseOptionIDs(idMap, "@10000-20000-2") assert.NotNil(t, err) + + _, err = parseOptionIDs(idMap, "100-200-3###400-500-6") + assert.NotNil(t, err) } func TestParseIDMapMountOption(t *testing.T) {