diff options
Diffstat (limited to 'src/lockdown.c')
-rw-r--r-- | src/lockdown.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/lockdown.c b/src/lockdown.c index 159f741..2cacc71 100644 --- a/src/lockdown.c +++ b/src/lockdown.c | |||
@@ -696,6 +696,30 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new_with_handshake(idevi | |||
696 | } | 696 | } |
697 | plist_free(p_version); | 697 | plist_free(p_version); |
698 | } | 698 | } |
699 | if (device->device_class == 0) { | ||
700 | plist_t p_device_class = NULL; | ||
701 | if (lockdownd_get_value(client_loc, NULL, "DeviceClass", &p_device_class) == LOCKDOWN_E_SUCCESS) { | ||
702 | char* s_device_class = NULL; | ||
703 | plist_get_string_val(p_device_class, &s_device_class); | ||
704 | if (s_device_class != NULL) { | ||
705 | if (!strcmp(s_device_class, "iPhone")) { | ||
706 | device->device_class = DEVICE_CLASS_IPHONE; | ||
707 | } else if (!strcmp(s_device_class, "iPad")) { | ||
708 | device->device_class = DEVICE_CLASS_IPAD; | ||
709 | } else if (!strcmp(s_device_class, "iPod")) { | ||
710 | device->device_class = DEVICE_CLASS_IPOD; | ||
711 | } else if (!strcmp(s_device_class, "Watch")) { | ||
712 | device->device_class = DEVICE_CLASS_WATCH; | ||
713 | } else if (!strcmp(s_device_class, "AppleTV")) { | ||
714 | device->device_class = DEVICE_CLASS_APPLETV; | ||
715 | } else { | ||
716 | device->device_class = DEVICE_CLASS_UNKNOWN; | ||
717 | } | ||
718 | free(s_device_class); | ||
719 | } | ||
720 | } | ||
721 | plist_free(p_device_class); | ||
722 | } | ||
699 | 723 | ||
700 | userpref_error_t uerr = userpref_read_pair_record(client_loc->udid, &pair_record); | 724 | userpref_error_t uerr = userpref_read_pair_record(client_loc->udid, &pair_record); |
701 | if (uerr == USERPREF_E_READ_ERROR) { | 725 | if (uerr == USERPREF_E_READ_ERROR) { |
@@ -720,7 +744,7 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new_with_handshake(idevi | |||
720 | plist_free(pair_record); | 744 | plist_free(pair_record); |
721 | pair_record = NULL; | 745 | pair_record = NULL; |
722 | 746 | ||
723 | if (device->version < DEVICE_VERSION(7,0,0)) { | 747 | if (device->version < DEVICE_VERSION(7,0,0) && device->device_class != DEVICE_CLASS_WATCH) { |
724 | /* for older devices, we need to validate pairing to receive trusted host status */ | 748 | /* for older devices, we need to validate pairing to receive trusted host status */ |
725 | ret = lockdownd_validate_pair(client_loc, NULL); | 749 | ret = lockdownd_validate_pair(client_loc, NULL); |
726 | 750 | ||