From d5c9f26e3d6d0babfed271f51c7a5440a75690f7 Mon Sep 17 00:00:00 2001 From: Laura Brehm Date: Thu, 1 Feb 2024 23:25:57 +0000 Subject: [PATCH] plugins: fix panic installing from repo w/ digest Only print the tag when the received reference has a tag, if we can't cast the received tag to a `reference.Tagged` then skip printing the tag as it's likely a digest. Fixes panic when trying to install a plugin from a reference with a digest such as `vieux/sshfs@sha256:1d3c3e42c12138da5ef7873b97f7f32cf99fb6edde75fa4f0bcf9ed277855811` Signed-off-by: Laura Brehm Signed-off-by: Sebastiaan van Stijn --- plugin/fetch_linux.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugin/fetch_linux.go b/plugin/fetch_linux.go index fe00e88874..e5a45c29dd 100644 --- a/plugin/fetch_linux.go +++ b/plugin/fetch_linux.go @@ -200,8 +200,13 @@ func withFetchProgress(cs content.Store, out progress.Output, ref reference.Name switch desc.MediaType { case specs.MediaTypeImageManifest, images.MediaTypeDockerSchema2Manifest: tn := reference.TagNameOnly(ref) - tagged := tn.(reference.Tagged) - progress.Messagef(out, tagged.Tag(), "Pulling from %s", reference.FamiliarName(ref)) + var tagOrDigest string + if tagged, ok := tn.(reference.Tagged); ok { + tagOrDigest = tagged.Tag() + } else { + tagOrDigest = tn.String() + } + progress.Messagef(out, tagOrDigest, "Pulling from %s", reference.FamiliarName(ref)) progress.Messagef(out, "", "Digest: %s", desc.Digest.String()) return nil, nil case