summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/preflight.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/preflight.c b/src/preflight.c
index b616e5f..44a59ff 100644
--- a/src/preflight.c
+++ b/src/preflight.c
@@ -118,6 +118,9 @@ static void* preflight_worker_handle_device_add(void* userdata)
118 lockdownd_client_t lockdown = NULL; 118 lockdownd_client_t lockdown = NULL;
119 lockdownd_error_t lerr; 119 lockdownd_error_t lerr;
120 120
121 plist_t value = NULL;
122 char* version_str = NULL;
123
121retry: 124retry:
122 lerr = lockdownd_client_new(dev, &lockdown, "usbmuxd"); 125 lerr = lockdownd_client_new(dev, &lockdown, "usbmuxd");
123 if (lerr != LOCKDOWN_E_SUCCESS) { 126 if (lerr != LOCKDOWN_E_SUCCESS) {
@@ -171,15 +174,16 @@ retry:
171 break; 174 break;
172 } 175 }
173 176
174 plist_t value = NULL;
175 lerr = lockdownd_get_value(lockdown, NULL, "ProductVersion", &value); 177 lerr = lockdownd_get_value(lockdown, NULL, "ProductVersion", &value);
176 if (lerr != LOCKDOWN_E_SUCCESS) { 178 if (lerr != LOCKDOWN_E_SUCCESS) {
177 usbmuxd_log(LL_ERROR, "%s: ERROR: Could not get ProductVersion from device %s, lockdown error %d", __func__, _dev->udid, lerr); 179 usbmuxd_log(LL_ERROR, "%s: ERROR: Could not get ProductVersion from device %s, lockdown error %d", __func__, _dev->udid, lerr);
178 goto leave; 180 goto leave;
179 } 181 }
180 182
181 char* version_str = NULL; 183 if (value && plist_get_node_type(value) == PLIST_STRING) {
182 plist_get_string_val(value, &version_str); 184 plist_get_string_val(value, &version_str);
185 }
186
183 if (!version_str) { 187 if (!version_str) {
184 usbmuxd_log(LL_ERROR, "%s: Could not get ProductVersion string from device %s handle %d", __func__, _dev->udid, (int)(long)_dev->conn_data); 188 usbmuxd_log(LL_ERROR, "%s: Could not get ProductVersion string from device %s handle %d", __func__, _dev->udid, (int)(long)_dev->conn_data);
185 goto leave; 189 goto leave;
@@ -277,6 +281,10 @@ retry:
277 } 281 }
278 282
279leave: 283leave:
284 if (value)
285 plist_free(value);
286 if (version_str)
287 free(version_str);
280 if (lockdown) 288 if (lockdown)
281 lockdownd_client_free(lockdown); 289 lockdownd_client_free(lockdown);
282 if (dev) 290 if (dev)