diff --git a/x/model/name.go b/x/model/name.go index 7e1661e5..89f9c395 100644 --- a/x/model/name.go +++ b/x/model/name.go @@ -477,6 +477,10 @@ func Parts(s string) iter.Seq2[NamePart, string] { state, j := PartDigest, len(s) for i := len(s) - 1; i >= 0; i-- { if partLen++; partLen > MaxNamePartLen { + // catch a part that is too long early, so + // we don't keep spinning on it, waiting for + // an isInValidPart check which would scan + // over it again. yield(PartInvalid, "") return } diff --git a/x/model/name_test.go b/x/model/name_test.go index 6b917b04..984da111 100644 --- a/x/model/name_test.go +++ b/x/model/name_test.go @@ -60,6 +60,8 @@ var testNames = map[string]fields{ "x@sha123-1": {model: "x", digest: "sha123-1"}, "@sha456-2": {digest: "sha456-2"}, + "@@sha123-1": {}, + // preserves case for build "x+b": {model: "x", build: "b"},