From 12e63b5d5219ddd3b4a62f56960c0f69caaafd83 Mon Sep 17 00:00:00 2001 From: xyz-li Date: Thu, 26 Sep 2024 16:43:26 +0800 Subject: [PATCH] [fix] filter images panic Signed-off-by: xyz-li --- cmd/nerdctl/image/image_list_test.go | 2 ++ pkg/imgutil/filtering.go | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/cmd/nerdctl/image/image_list_test.go b/cmd/nerdctl/image/image_list_test.go index 72e902fa62b..2e9824b8206 100644 --- a/cmd/nerdctl/image/image_list_test.go +++ b/cmd/nerdctl/image/image_list_test.go @@ -110,6 +110,8 @@ LABEL version=0.1`, testutil.CommonImage) base.Cmd("images", "--filter", fmt.Sprintf("since=%s", testutil.CommonImage)).AssertOutNotContains(testutil.ImageRepo(testutil.CommonImage)) base.Cmd("images", "--filter", fmt.Sprintf("since=%s", testutil.CommonImage), testutil.CommonImage).AssertOutNotContains(testutil.ImageRepo(testutil.CommonImage)) base.Cmd("images", "--filter", fmt.Sprintf("since=%s", testutil.CommonImage), testutil.CommonImage).AssertOutNotContains(tempName) + base.Cmd("images", "--filter", fmt.Sprintf("since=%s:%s", "non-exists-image", "non-exists-image")).AssertOutContains(tempName) + base.Cmd("images", "--filter", fmt.Sprintf("before=%s:%s", "non-exists-image", "non-exists-image")).AssertOutContains(tempName) } base.Cmd("images", "--filter", "label=foo=bar").AssertOutContains(tempName) base.Cmd("images", "--filter", "label=foo=bar1").AssertOutNotContains(tempName) diff --git a/pkg/imgutil/filtering.go b/pkg/imgutil/filtering.go index 05d178a4fe5..473a382642f 100644 --- a/pkg/imgutil/filtering.go +++ b/pkg/imgutil/filtering.go @@ -150,10 +150,12 @@ func FilterByCreatedAt(ctx context.Context, client *containerd.Client, before [] if err != nil { return []images.Image{}, err } - maxTime = beforeImages[0].CreatedAt - for _, image := range beforeImages { - if image.CreatedAt.After(maxTime) { - maxTime = image.CreatedAt + if len(beforeImages) > 0 { + maxTime = beforeImages[0].CreatedAt + for _, image := range beforeImages { + if image.CreatedAt.After(maxTime) { + maxTime = image.CreatedAt + } } } } @@ -163,10 +165,12 @@ func FilterByCreatedAt(ctx context.Context, client *containerd.Client, before [] if err != nil { return []images.Image{}, err } - minTime = sinceImages[0].CreatedAt - for _, image := range sinceImages { - if image.CreatedAt.Before(minTime) { - minTime = image.CreatedAt + if len(sinceImages) > 0 { + minTime = sinceImages[0].CreatedAt + for _, image := range sinceImages { + if image.CreatedAt.Before(minTime) { + minTime = image.CreatedAt + } } } }