diff options
| -rw-r--r-- | src/preflight.c | 14 |
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 | |||
| 121 | retry: | 124 | retry: |
| 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 | ||
| 279 | leave: | 283 | leave: |
| 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) |
