From 086e2464c2e55822035cfd80b4e0a47e20b4394d Mon Sep 17 00:00:00 2001 From: Dante Catalfamo <43040593+dantecatalfamo@users.noreply.github.com> Date: Tue, 23 Apr 2024 10:09:47 -0400 Subject: [PATCH] Check macos version with semver for nudge disabling (#18485) Fixes a bug where macos versions are incorrectly parsed for nudge requirements --- server/fleet/operating_systems.go | 9 ++++++--- server/fleet/operating_systems_test.go | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/fleet/operating_systems.go b/server/fleet/operating_systems.go index 91c9a1ead7..dda49c63f2 100644 --- a/server/fleet/operating_systems.go +++ b/server/fleet/operating_systems.go @@ -2,8 +2,9 @@ package fleet import ( "fmt" - "strconv" "strings" + + "github.com/Masterminds/semver" ) // OperatingSystem is an operating system uniquely identified according to its name and version. @@ -32,6 +33,8 @@ func (os OperatingSystem) IsWindows() bool { return strings.ToLower(os.Platform) == "windows" } +var macOSNudgeLastVersion = semver.MustParse("14") + // RequiresNudge returns whether the target platform is darwin and // below version 14. Starting at macOS 14 nudge is no longer required, // as the mechanism to notify users about updates is built in. @@ -40,12 +43,12 @@ func (os *OperatingSystem) RequiresNudge() (bool, error) { return false, nil } - versionFloat, err := strconv.ParseFloat(os.Version, 32) + version, err := semver.NewVersion(os.Version) if err != nil { return false, fmt.Errorf("parsing macos version \"%s\": %w", os.Version, err) } - if float32(versionFloat) < 14 { + if version.LessThan(macOSNudgeLastVersion) { return true, nil } diff --git a/server/fleet/operating_systems_test.go b/server/fleet/operating_systems_test.go index 3f737297b2..9fc35e686c 100644 --- a/server/fleet/operating_systems_test.go +++ b/server/fleet/operating_systems_test.go @@ -33,10 +33,10 @@ func TestOperatingSystemRequiresNudge(t *testing.T) { {platform: "chrome", version: "12.1"}, {platform: "chrome", version: "15"}, {platform: "darwin", parseError: true}, - {platform: "darwin", version: "12.0", requiresNudge: true}, + {platform: "darwin", version: "12.0.9", requiresNudge: true}, {platform: "darwin", version: "11", requiresNudge: true}, {platform: "darwin", version: "14.0"}, - {platform: "darwin", version: "14.3"}, + {platform: "darwin", version: "14.3.2"}, {platform: "windows"}, {platform: "windows", version: "12.2"}, {platform: "windows", version: "15.4"},