ContainerRegistry: Reject invalid image tags and digests #140
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
ImageReference
does not check for illegal characters in parsed imagedigests and tags. This means that
containertool
will send illegal imagenames to the registry. The registry will reject them, but the error
message might not explain why, so a generic error message will be
printed. Runtimes reject illegal image references immediately, without
sending them to the registry.
Some desktop runtimes accept local image names which the registry will
reject; other runtimes reject these names even for local names.
containertool
now also rejects them.
Modifications
Digest
orReference
instead ofString
.Result
It is impossible to create a
Repository
object containing a malformedtag or digest, because the constructor checks the string value. It is impossible
to send a malformed name to the registry because the API wrappers only
accept
Digest
orReference (Digest | Tag)
objects.Fixes #139
Test Plan
Existing tests continue to pass.
New tests exercise additional checks which were previously missing.
Removed tests which checked tags which seemed to be accepted by some desktop runtimes, but which were not accepted by registries.