diff options
author | Sebastiaan van Stijn <thaJeztah@users.noreply.github.com> | 2023-04-12 22:10:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-12 22:10:52 +0200 |
commit | 49fa3d82b75749a96fdb4bbc2092d9495b9dfdd9 (patch) | |
tree | 14315bc2fb0734ac29c7d59f906c234ecd60fd18 /api | |
parent | 8cf66ed7322fa885ef99c4c044fa23e1727301dc (diff) | |
parent | 4769809555d940a27c6a15586a3b340d5a55a38f (diff) | |
download | docker-49fa3d82b75749a96fdb4bbc2092d9495b9dfdd9.tar.gz |
Merge pull request #44510 from thaJeztah/api_server_sanitizeRepoAndTags
api/server/backend/build: sanitizeRepoAndTags() check for digest
Diffstat (limited to 'api')
-rw-r--r-- | api/server/backend/build/tag.go | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/api/server/backend/build/tag.go b/api/server/backend/build/tag.go index 4ae1ccb0d7..9b91cdc49c 100644 --- a/api/server/backend/build/tag.go +++ b/api/server/backend/build/tag.go @@ -22,14 +22,10 @@ func tagImages(ctx context.Context, ic ImageComponent, stdout io.Writer, imageID } // sanitizeRepoAndTags parses the raw "t" parameter received from the client -// to a slice of repoAndTag. -// It also validates each repoName and tag. -func sanitizeRepoAndTags(names []string) ([]reference.Named, error) { - var ( - repoAndTags []reference.Named - // This map is used for deduplicating the "-t" parameter. - uniqNames = make(map[string]struct{}) - ) +// to a slice of repoAndTag. It removes duplicates, and validates each name +// to not contain a digest. +func sanitizeRepoAndTags(names []string) (repoAndTags []reference.Named, err error) { + uniqNames := map[string]struct{}{} for _, repo := range names { if repo == "" { continue @@ -40,14 +36,12 @@ func sanitizeRepoAndTags(names []string) ([]reference.Named, error) { return nil, err } - if _, isCanonical := ref.(reference.Canonical); isCanonical { + if _, ok := ref.(reference.Digested); ok { return nil, errors.New("build tag cannot contain a digest") } ref = reference.TagNameOnly(ref) - nameWithTag := ref.String() - if _, exists := uniqNames[nameWithTag]; !exists { uniqNames[nameWithTag] = struct{}{} repoAndTags = append(repoAndTags, ref) |