summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2025-06-12 12:59:53 +0200
committerGravatar Nikias Bassen2025-06-12 12:59:53 +0200
commit3bf294f149594b61aaa6dace57628c924af2f501 (patch)
tree132f6ae0e97ae0ce06224528d77caac2f14c430d /src
parentd3aec6dd14f81b75f212632da66a510c75c6b9e8 (diff)
downloadlibimobiledevice-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.c11
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
643 643
644 client_loc->label = label ? strdup(label) : NULL; 644 client_loc->label = label ? strdup(label) : NULL;
645 645
646 int is_lockdownd = 0;
646 if (lockdownd_query_type(client_loc, &type) != LOCKDOWN_E_SUCCESS) { 647 if (lockdownd_query_type(client_loc, &type) != LOCKDOWN_E_SUCCESS) {
647 debug_info("QueryType failed in the lockdownd client."); 648 debug_info("QueryType failed in the lockdownd client.");
648 } else if (strcmp("com.apple.mobile.lockdown", type) != 0) { 649 } else if (!strcmp("com.apple.mobile.lockdown", type)) {
649 debug_info("Warning QueryType request returned \"%s\".", type); 650 is_lockdownd = 1;
651 } else {
652 debug_info("QueryType request returned \"%s\"", type);
650 } 653 }
651 free(type); 654 free(type);
652 655
653 *client = client_loc; 656 *client = client_loc;
654 657
655 if (device->version == 0) { 658 if (is_lockdownd && device->version == 0) {
656 plist_t p_version = NULL; 659 plist_t p_version = NULL;
657 if (lockdownd_get_value(client_loc, NULL, "ProductVersion", &p_version) == LOCKDOWN_E_SUCCESS) { 660 if (lockdownd_get_value(client_loc, NULL, "ProductVersion", &p_version) == LOCKDOWN_E_SUCCESS) {
658 int vers[3] = {0, 0, 0}; 661 int vers[3] = {0, 0, 0};
@@ -665,7 +668,7 @@ lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *cli
665 } 668 }
666 plist_free(p_version); 669 plist_free(p_version);
667 } 670 }
668 if (device->device_class == 0) { 671 if (is_lockdownd && device->device_class == 0) {
669 plist_t p_device_class = NULL; 672 plist_t p_device_class = NULL;
670 if (lockdownd_get_value(client_loc, NULL, "DeviceClass", &p_device_class) == LOCKDOWN_E_SUCCESS) { 673 if (lockdownd_get_value(client_loc, NULL, "DeviceClass", &p_device_class) == LOCKDOWN_E_SUCCESS) {
671 char* s_device_class = NULL; 674 char* s_device_class = NULL;