summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2022-10-04 15:31:17 +0200
committerGravatar Nikias Bassen2022-10-04 15:31:17 +0200
commit12e24e4bd161c76631c77244f63ff02ef18f251d (patch)
tree44ce8858cf3c19fd3a49bfe761c5a59b4b8c8ba0 /src
parent7f24e9a9c9e862c4d65c3a460fc2315d606d9c7d (diff)
downloadusbmuxd-12e24e4bd161c76631c77244f63ff02ef18f251d.tar.gz
usbmuxd-12e24e4bd161c76631c77244f63ff02ef18f251d.tar.bz2
preflight: Assume old iOS version if retrieval of ProductVersion fails
Some older devices (e.g. iOS 2.x) wouldn't allow querying the iOS version if the device is not paired. In this case we just assume an old version instead of erroring out, and this way the device will be made available.
Diffstat (limited to 'src')
-rw-r--r--src/preflight.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/src/preflight.c b/src/preflight.c
index 68e7f2c..9c57e98 100644
--- a/src/preflight.c
+++ b/src/preflight.c
@@ -214,18 +214,19 @@ retry:
214 214
215 lerr = lockdownd_get_value(lockdown, NULL, "ProductVersion", &value); 215 lerr = lockdownd_get_value(lockdown, NULL, "ProductVersion", &value);
216 if (lerr != LOCKDOWN_E_SUCCESS) { 216 if (lerr != LOCKDOWN_E_SUCCESS) {
217 usbmuxd_log(LL_ERROR, "%s: ERROR: Could not get ProductVersion from device %s, lockdown error %d", __func__, _dev->udid, lerr); 217 usbmuxd_log(LL_WARNING, "%s: Could not get ProductVersion from device %s, lockdown error %d", __func__, _dev->udid, lerr);
218 goto leave; 218 /* assume old iOS version */
219 } 219 version_str = strdup("1.0");
220 220 } else {
221 if (value && plist_get_node_type(value) == PLIST_STRING) { 221 if (value && plist_get_node_type(value) == PLIST_STRING) {
222 plist_get_string_val(value, &version_str); 222 plist_get_string_val(value, &version_str);
223 } 223 }
224 plist_free(value); 224 plist_free(value);
225 225
226 if (!version_str) { 226 if (!version_str) {
227 usbmuxd_log(LL_ERROR, "%s: Could not get ProductVersion string from device %s handle %d", __func__, _dev->udid, (int)(long)_dev->conn_data); 227 usbmuxd_log(LL_ERROR, "%s: Could not get ProductVersion string from device %s handle %d", __func__, _dev->udid, (int)(long)_dev->conn_data);
228 goto leave; 228 goto leave;
229 }
229 } 230 }
230 231
231 lerr = lockdownd_get_value(lockdown, NULL, "DeviceClass", &value); 232 lerr = lockdownd_get_value(lockdown, NULL, "DeviceClass", &value);