Force-enables “Enforce 3-App Limit” if iOS version does not support MacDirtyCow exploit

Prevents “Enforce 3-App Limit” remaining enabled after updating iOS version without a way to disable it.
This commit is contained in:
Riley Testut
2023-02-07 16:35:15 -06:00
parent 3adfc9db6d
commit 053cc9feda
2 changed files with 13 additions and 4 deletions

View File

@@ -60,6 +60,7 @@ public extension UserDefaults
@NSManaged @objc(activeAppsLimit) private var _activeAppsLimit: NSNumber?
@NSManaged var ignoreActiveAppsLimit: Bool
@NSManaged var isMacDirtyCowSupported: Bool
class func registerDefaults()
{
@@ -70,6 +71,9 @@ public extension UserDefaults
let ios14 = OperatingSystemVersion(majorVersion: 14, minorVersion: 0, patchVersion: 0)
let localServerSupportsRefreshing = !ProcessInfo.processInfo.isOperatingSystemAtLeast(ios14)
let ios16_2 = OperatingSystemVersion(majorVersion: 16, minorVersion: 2, patchVersion: 0)
let isMacDirtyCowSupported = ProcessInfo.processInfo.isOperatingSystemAtLeast(ios14) && !ProcessInfo.processInfo.isOperatingSystemAtLeast(ios16_2) // MacDirtyCow supports iOS 14.0 - 16.1.2
let defaults = [
#keyPath(UserDefaults.isBackgroundRefreshEnabled): true,
#keyPath(UserDefaults.isLegacyDeactivationSupported): isLegacyDeactivationSupported,
@@ -77,9 +81,16 @@ public extension UserDefaults
#keyPath(UserDefaults.localServerSupportsRefreshing): localServerSupportsRefreshing,
#keyPath(UserDefaults.requiresAppGroupMigration): true,
#keyPath(UserDefaults.ignoreActiveAppsLimit): false,
#keyPath(UserDefaults.isMacDirtyCowSupported): isMacDirtyCowSupported,
]
UserDefaults.standard.register(defaults: defaults)
UserDefaults.shared.register(defaults: defaults)
if !isMacDirtyCowSupported
{
// Disable ignoreActiveAppsLimit if running iOS version that doesn't support MacDirtyCow.
UserDefaults.standard.ignoreActiveAppsLimit = false
}
}
}