summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorSebastiaan van Stijn <thaJeztah@users.noreply.github.com>2023-04-12 22:10:52 +0200
committerGitHub <noreply@github.com>2023-04-12 22:10:52 +0200
commit49fa3d82b75749a96fdb4bbc2092d9495b9dfdd9 (patch)
tree14315bc2fb0734ac29c7d59f906c234ecd60fd18 /api
parent8cf66ed7322fa885ef99c4c044fa23e1727301dc (diff)
parent4769809555d940a27c6a15586a3b340d5a55a38f (diff)
downloaddocker-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.go16
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)