From a32612e06a81375d240c52b5470ea7179c4ef85d Mon Sep 17 00:00:00 2001 From: lzj Date: Thu, 1 Apr 2021 16:56:31 +0800 Subject: [PATCH] check pull chart ref Signed-off-by: lzj --- internal/experimental/registry/client.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/internal/experimental/registry/client.go b/internal/experimental/registry/client.go index c889ee913..17241d6d9 100644 --- a/internal/experimental/registry/client.go +++ b/internal/experimental/registry/client.go @@ -147,27 +147,29 @@ func (c *Client) PushChart(ref *Reference) error { // PullChart downloads a chart from a registry func (c *Client) PullChart(ref *Reference) (*bytes.Buffer, error) { - buf := bytes.NewBuffer(nil) + + if ref == nil { + return nil, errors.New("reference explicitly required") + } if ref.Tag == "" { - return buf, errors.New("tag explicitly required") + return nil, errors.New("tag explicitly required") } fmt.Fprintf(c.out, "%s: Pulling from %s\n", ref.Tag, ref.Repo) store := content.NewMemoryStore() - fullname := ref.FullName() - _ = fullname - _, layerDescriptors, err := oras.Pull(ctx(c.out, c.debug), c.resolver, ref.FullName(), store, + fullName := ref.FullName() + _, layerDescriptors, err := oras.Pull(ctx(c.out, c.debug), c.resolver, fullName, store, oras.WithPullEmptyNameAllowed(), oras.WithAllowedMediaTypes(KnownMediaTypes())) if err != nil { - return buf, err + return nil, err } numLayers := len(layerDescriptors) if numLayers < 1 { - return buf, errors.New( + return nil, errors.New( fmt.Sprintf("manifest does not contain at least 1 layer (total: %d)", numLayers)) } @@ -182,17 +184,17 @@ func (c *Client) PullChart(ref *Reference) (*bytes.Buffer, error) { } if contentLayer == nil { - return buf, errors.New( + return nil, errors.New( fmt.Sprintf("manifest does not contain a layer with mediatype %s", HelmChartContentLayerMediaType)) } _, b, ok := store.Get(*contentLayer) if !ok { - return buf, errors.Errorf("Unable to retrieve blob with digest %s", contentLayer.Digest) + return nil, errors.Errorf("Unable to retrieve blob with digest %s", contentLayer.Digest) } - buf = bytes.NewBuffer(b) + buf := bytes.NewBuffer(b) return buf, nil }