diff --git a/semantic/testdata/alpine-versions.txt b/semantic/testdata/alpine-versions.txt index 53bc7e3d..53258da2 100644 --- a/semantic/testdata/alpine-versions.txt +++ b/semantic/testdata/alpine-versions.txt @@ -12,6 +12,17 @@ 1.2.3b > 1.2.0d +0.r1 < 0r2 +0..1..0 < 0..1..1 +0...1...0 < 0...1...1 +0...1...0.r1 < 0...1...0.r2 +0...1...0r1 < 0...1...0r2 +0..8 = 0..8 +0..8 > 0...8 +0.8.21.r2 > 0.8.21.r1 +10.2.24.r0 > 10.2.22.r0 +0.8.21.r2 < 0.8.21r2 + # letters (invalid) - note on latest apk these are "<" but on 3.x line they're ">" 1.2.0A < 1.2.0d 1.2.0D < 1.2.0d diff --git a/semantic/version-alpine.go b/semantic/version-alpine.go index 70ab2967..26323b14 100644 --- a/semantic/version-alpine.go +++ b/semantic/version-alpine.go @@ -255,6 +255,12 @@ func parseAlpineNumberComponents(v *alpineVersion, str string) (string, error) { } for i, d := range strings.Split(sub, ".") { + // while technically not allowed by the spec, currently apk does not + // consider it invalid to have a dot that isn't followed by a digit + if d == "" { + break + } + value, err := convertToBigInt(d) if err != nil {