diff options
author | 2025-06-12 12:59:53 +0200 | |
---|---|---|
committer | 2025-06-12 12:59:53 +0200 | |
commit | 3bf294f149594b61aaa6dace57628c924af2f501 (patch) | |
tree | 132f6ae0e97ae0ce06224528d77caac2f14c430d /src | |
parent | d3aec6dd14f81b75f212632da66a510c75c6b9e8 (diff) | |
download | libimobiledevice-3bf294f149594b61aaa6dace57628c924af2f501.tar.gz libimobiledevice-3bf294f149594b61aaa6dace57628c924af2f501.tar.bz2 |
lockdown: Only query ProductVersion and DeviceClass if we are talking to lockdownd
In restore mode these requests fail so we need to make sure we are
actually talking to lockdownd
Diffstat (limited to 'src')
-rw-r--r-- | src/lockdown.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/lockdown.c b/src/lockdown.c index 1edb99b..32389c9 100644 --- a/src/lockdown.c +++ b/src/lockdown.c @@ -643,16 +643,19 @@ lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *cli client_loc->label = label ? strdup(label) : NULL; + int is_lockdownd = 0; if (lockdownd_query_type(client_loc, &type) != LOCKDOWN_E_SUCCESS) { debug_info("QueryType failed in the lockdownd client."); - } else if (strcmp("com.apple.mobile.lockdown", type) != 0) { - debug_info("Warning QueryType request returned \"%s\".", type); + } else if (!strcmp("com.apple.mobile.lockdown", type)) { + is_lockdownd = 1; + } else { + debug_info("QueryType request returned \"%s\"", type); } free(type); *client = client_loc; - if (device->version == 0) { + if (is_lockdownd && device->version == 0) { plist_t p_version = NULL; if (lockdownd_get_value(client_loc, NULL, "ProductVersion", &p_version) == LOCKDOWN_E_SUCCESS) { int vers[3] = {0, 0, 0}; @@ -665,7 +668,7 @@ lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *cli } plist_free(p_version); } - if (device->device_class == 0) { + if (is_lockdownd && device->device_class == 0) { plist_t p_device_class = NULL; if (lockdownd_get_value(client_loc, NULL, "DeviceClass", &p_device_class) == LOCKDOWN_E_SUCCESS) { char* s_device_class = NULL; |