Skip to content

Commit 8294e9d

Browse files
committed
redo the minorversion calculation a third time
1 parent 62ba9b7 commit 8294e9d

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

CHANGELOG.md

+11-3
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,24 @@ Requires macOS 12.0 and higher.
1515
- macOS device is 14.2: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-04-08 00:00:00 +0000
1616
- macOS device is 14.3: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-04-08 00:00:00 +0000
1717
- macOS device is 14.4: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-04-08 00:00:00 +0000
18-
- macOS device is 14.4.1: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-04-15 00:00:00 +0000
18+
- macOS device is 14.4.1: Required OS: 14.5 - Target macOS 14.5 requiredInstallationDate of 2024-06-03 00:00:00 +0000
1919
- This device's requiredInstallationDate is different than the others as there is no active exploit on 14.4.1
2020
- macOS device is 14.5: Required OS: 14.5 - Fully updated
2121
- Ex: `minorVersionRecalculationThreshold` is set to 2 and SOFA feed has macOS 14.5 available
2222
- macOS device is 14.0: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-03-21 00:00:00 +0000
2323
- macOS device is 14.1: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-03-21 00:00:00 +0000
2424
- macOS device is 14.2: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-03-21 00:00:00 +0000
2525
- macOS device is 14.3: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-03-21 00:00:00 +0000
26-
- macOS device is 14.4: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-03-21 00:00:00 +0000
27-
- macOS device is 14.4.1: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-04-15 00:00:00 +0000
26+
- macOS device is 14.4: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-04-08 00:00:00 +0000
27+
- macOS device is 14.4.1: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-06-03 00:00:00 +0000
28+
- macOS device is 14.5: Required OS: 14.5 - Fully updated
29+
- Ex: `minorVersionRecalculationThreshold` is set to 3 and SOFA feed has macOS 14.5 available
30+
- macOS device is 14.0: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-02-22 00:00:00 +0000
31+
- macOS device is 14.1: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-02-22 00:00:00 +0000
32+
- macOS device is 14.2: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-02-22 00:00:00 +0000
33+
- macOS device is 14.3: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-02-22 00:00:00 +0000
34+
- macOS device is 14.4: Required OS: 14.5 - Target macOS 14.4 requiredInstallationDate of 2024-04-08 00:00:00 +0000
35+
- macOS device is 14.4.1: Required OS: 14.5 - Target macOS 14.4.1 requiredInstallationDate of 2024-06-03 00:00:00 +0000
2836
- macOS device is 14.5: Required OS: 14.5 - Fully updated
2937
- Addresses [612](https://github.com/macadmins/nudge/issues/612)
3038

Nudge/UI/Main.swift

+6-3
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,11 @@ class AppDelegate: NSObject, NSApplicationDelegate {
231231
})
232232

233233
// Filter versions with the same major version as the current installed version
234-
let minorVersions = VersionManager().removeDuplicates(from: filteredVersions.filter { version in
234+
var minorVersions = VersionManager().removeDuplicates(from: filteredVersions.filter { version in
235235
VersionManager.getMajorVersion(from: version) == currentMajorVersion
236236
})
237+
// Remove the current installed version from minorVersions
238+
minorVersions.removeAll { $0 == currentInstalledVersion }
237239

238240
// Count actively exploited CVEs in the filtered versions
239241
LogManager.notice("Assessing macOS version range for active exploits: \(filteredVersions) ", logger: sofaLog)
@@ -283,13 +285,14 @@ class AppDelegate: NSObject, NSApplicationDelegate {
283285
if minorVersions.isEmpty {
284286
requiredInstallationDate = selectedOS!.releaseDate?.addingTimeInterval(slaExtension) ?? DateManager().getCurrentDate().addingTimeInterval(TimeInterval(90 * 86400))
285287
} else {
288+
LogManager.notice("Assessing macOS version range for recalculation: \(minorVersions)", logger: sofaLog)
286289
let safeIndex = max(0, minorVersions.count - (OSVersionRequirementVariables.minorVersionRecalculationThreshold + 1)) // Ensure the index is within bounds
287290
let targetVersion = minorVersions[safeIndex]
288291
var foundVersion = false
289292
LogManager.notice("minorVersionRecalculationThreshold is set to \(OSVersionRequirementVariables.minorVersionRecalculationThreshold) - Current Version: \(currentInstalledVersion) - Targeting version \(targetVersion) requiredInstallationDate via SOFA", logger: sofaLog)
290293
for osVersion in macOSSOFAAssets {
291-
for securityRelease in osVersion.securityReleases.reversed() {
292-
if VersionManager.versionGreaterThanOrEqual(currentVersion: securityRelease.productVersion, newVersion: targetVersion) && VersionManager.versionLessThanOrEqual(currentVersion: currentInstalledVersion, newVersion: targetVersion) {
294+
for securityRelease in osVersion.securityReleases {
295+
if securityRelease.productVersion == targetVersion {
293296
requiredInstallationDate = securityRelease.releaseDate?.addingTimeInterval(slaExtension) ?? DateManager().getCurrentDate().addingTimeInterval(TimeInterval(90 * 86400))
294297
LogManager.notice("Found target macOS version \(targetVersion) - releaseDate is \(securityRelease.releaseDate!), slaExtension is \(LoggerUtilities().printTimeInterval(slaExtension))", logger: sofaLog)
295298
foundVersion = true

0 commit comments

Comments
 (0)