diff --git a/config/os.go b/config/os.go index dfe814fa..10f34468 100644 --- a/config/os.go +++ b/config/os.go @@ -1,6 +1,7 @@ package config import ( + "fmt" "strings" "time" ) @@ -211,7 +212,7 @@ func GetEOL(family, release string) (eol EOL, found bool) { "3.10": {StandardSupportUntil: time.Date(2021, 5, 1, 23, 59, 59, 0, time.UTC)}, "3.11": {StandardSupportUntil: time.Date(2021, 11, 1, 23, 59, 59, 0, time.UTC)}, "3.12": {StandardSupportUntil: time.Date(2022, 5, 1, 23, 59, 59, 0, time.UTC)}, - }[release] + }[majorDotMinor(release)] case FreeBSD: // https://www.freebsd.org/security/ eol, found = map[string]EOL{ @@ -230,6 +231,14 @@ func major(osVer string) (majorVersion string) { return strings.Split(osVer, ".")[0] } +func majorDotMinor(osVer string) (majorDotMinor string) { + ss := strings.SplitN(osVer, ".", 3) + if len(ss) == 1 { + return osVer + } + return fmt.Sprintf("%s.%s", ss[0], ss[1]) +} + func isAmazonLinux1(osRelease string) bool { return len(strings.Fields(osRelease)) == 1 } diff --git a/config/os_test.go b/config/os_test.go index 14375a46..6838a2c0 100644 --- a/config/os_test.go +++ b/config/os_test.go @@ -324,3 +324,50 @@ func TestEOL_IsStandardSupportEnded(t *testing.T) { }) } } + +func Test_majorDotMinor(t *testing.T) { + type args struct { + osVer string + } + tests := []struct { + name string + args args + wantMajorDotMinor string + }{ + { + name: "empty", + args: args{ + osVer: "", + }, + wantMajorDotMinor: "", + }, + { + name: "major", + args: args{ + osVer: "3", + }, + wantMajorDotMinor: "3", + }, + { + name: "major dot minor", + args: args{ + osVer: "3.1", + }, + wantMajorDotMinor: "3.1", + }, + { + name: "major dot minor dot release", + args: args{ + osVer: "3.1.4", + }, + wantMajorDotMinor: "3.1", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if gotMajorDotMinor := majorDotMinor(tt.args.osVer); gotMajorDotMinor != tt.wantMajorDotMinor { + t.Errorf("majorDotMinor() = %v, want %v", gotMajorDotMinor, tt.wantMajorDotMinor) + } + }) + } +}