From e597b9564b47213734787b3e0c540a635b250bbf Mon Sep 17 00:00:00 2001 From: Jacob Blain Christen Date: Sun, 17 Oct 2021 16:36:02 -0700 Subject: [PATCH] fix agent crash when removing invalid image (#83) The client attempts to "noramlize" image refs when deleting to allow for shortened image identifiers to be passed. When passing an invalid image ref this could result in the client requesting deletion of a nil image from the server. The server now silently succeed and do nothing while the client now checks for passing a nil image ref and lets the user know that no such image could be found. Fixes #80 Signed-off-by: Jacob Blain Christen --- pkg/client/image/remove.go | 4 ++++ pkg/server/images/remove.go | 3 +++ 2 files changed, 7 insertions(+) diff --git a/pkg/client/image/remove.go b/pkg/client/image/remove.go index 80c58f0..92c2fca 100644 --- a/pkg/client/image/remove.go +++ b/pkg/client/image/remove.go @@ -3,6 +3,7 @@ package image import ( "context" + "github.com/pkg/errors" imagesv1 "github.com/rancher/kim/pkg/apis/services/images/v1alpha1" "github.com/rancher/kim/pkg/client" "github.com/sirupsen/logrus" @@ -17,6 +18,9 @@ func (s *Remove) Do(ctx context.Context, k8s *client.Interface, image string) er if err != nil { return err } + if ref == nil { + return errors.Errorf("image %q: not found", image) + } res, err := imagesClient.Remove(ctx, &imagesv1.ImageRemoveRequest{Image: ref}) logrus.Debugf("%#v", res) return err diff --git a/pkg/server/images/remove.go b/pkg/server/images/remove.go index f3564c2..101731f 100644 --- a/pkg/server/images/remove.go +++ b/pkg/server/images/remove.go @@ -19,6 +19,9 @@ func (s *Server) Remove(ctx context.Context, req *imagesv1.ImageRemoveRequest) ( return nil, err } defer done(ctx) + if req.Image == nil { + return &imagesv1.ImageRemoveResponse{}, nil + } img, err := s.Containerd.ImageService().Get(ctx, req.Image.Image) if err != nil { return nil, err