From 279a290b606a1c1755616211fd39fd2131bad649 Mon Sep 17 00:00:00 2001 From: Riley Testut Date: Thu, 20 May 2021 12:02:55 -0700 Subject: [PATCH] =?UTF-8?q?[AltServer]=20Reads=20devices=E2=80=99=20OS=20v?= =?UTF-8?q?ersion=20during=20discovery?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AltServer/Devices/ALTDeviceManager.mm | 22 ++++++++++++++++++++++ Dependencies/AltSign | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/AltServer/Devices/ALTDeviceManager.mm b/AltServer/Devices/ALTDeviceManager.mm index 795209ea..f0c74346 100644 --- a/AltServer/Devices/ALTDeviceManager.mm +++ b/AltServer/Devices/ALTDeviceManager.mm @@ -1312,14 +1312,24 @@ NSNotificationName const ALTDeviceManagerDeviceDidDisconnectNotification = @"ALT char *device_name = NULL; char *device_type_string = NULL; + char *device_version_string = NULL; plist_t device_type_plist = NULL; + plist_t device_version_plist = NULL; void (^cleanUp)(void) = ^{ + if (device_version_plist) { + plist_free(device_version_plist); + } + if (device_type_plist) { plist_free(device_type_plist); } + if (device_version_string) { + free(device_version_string); + } + if (device_type_string) { free(device_type_string); } @@ -1399,10 +1409,22 @@ NSNotificationName const ALTDeviceManagerDeviceDidDisconnectNotification = @"ALT continue; } + if (lockdownd_get_value(client, NULL, "ProductVersion", &device_version_plist) != LOCKDOWN_E_SUCCESS) + { + fprintf(stderr, "ERROR: Could not get device type for %s!\n", device_name); + + cleanUp(); + continue; + } + + plist_get_string_val(device_version_plist, &device_version_string); + NSOperatingSystemVersion osVersion = NSOperatingSystemVersionFromString(@(device_version_string)); + NSString *name = [NSString stringWithCString:device_name encoding:NSUTF8StringEncoding]; NSString *identifier = [NSString stringWithCString:udid encoding:NSUTF8StringEncoding]; ALTDevice *altDevice = [[ALTDevice alloc] initWithName:name identifier:identifier type:deviceType]; + altDevice.osVersion = osVersion; [connectedDevices addObject:altDevice]; cleanUp(); diff --git a/Dependencies/AltSign b/Dependencies/AltSign index 451588f5..ae857dc3 160000 --- a/Dependencies/AltSign +++ b/Dependencies/AltSign @@ -1 +1 @@ -Subproject commit 451588f56f8581162e70deff070a7bc743d657db +Subproject commit ae857dc3783161b48b02adf69db4a477b99cf39b