diff options
| -rw-r--r-- | src/idevice.c | 6 | ||||
| -rw-r--r-- | src/lockdown.c | 48 |
2 files changed, 43 insertions, 11 deletions
diff --git a/src/idevice.c b/src/idevice.c index 5b9c1ac..08a8b31 100644 --- a/src/idevice.c +++ b/src/idevice.c | |||
| @@ -1069,9 +1069,9 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_enable_ssl(idevice_conne | |||
| 1069 | idevice_error_t ret = IDEVICE_E_SSL_ERROR; | 1069 | idevice_error_t ret = IDEVICE_E_SSL_ERROR; |
| 1070 | plist_t pair_record = NULL; | 1070 | plist_t pair_record = NULL; |
| 1071 | 1071 | ||
| 1072 | userpref_read_pair_record(connection->device->udid, &pair_record); | 1072 | userpref_error_t uerr = userpref_read_pair_record(connection->device->udid, &pair_record); |
| 1073 | if (!pair_record) { | 1073 | if (uerr != USERPREF_E_SUCCESS) { |
| 1074 | debug_info("ERROR: Failed enabling SSL. Unable to read pair record for udid %s.", connection->device->udid); | 1074 | debug_info("ERROR: Failed enabling SSL. Unable to read pair record for udid %s (%d)", connection->device->udid, uerr); |
| 1075 | return ret; | 1075 | return ret; |
| 1076 | } | 1076 | } |
| 1077 | 1077 | ||
diff --git a/src/lockdown.c b/src/lockdown.c index 49f757c..159f741 100644 --- a/src/lockdown.c +++ b/src/lockdown.c | |||
| @@ -697,7 +697,12 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new_with_handshake(idevi | |||
| 697 | plist_free(p_version); | 697 | plist_free(p_version); |
| 698 | } | 698 | } |
| 699 | 699 | ||
| 700 | userpref_read_pair_record(client_loc->udid, &pair_record); | 700 | userpref_error_t uerr = userpref_read_pair_record(client_loc->udid, &pair_record); |
| 701 | if (uerr == USERPREF_E_READ_ERROR) { | ||
| 702 | debug_info("ERROR: Failed to retrieve pair record for %s", client_loc->udid); | ||
| 703 | lockdownd_client_free(client_loc); | ||
| 704 | return LOCKDOWN_E_RECEIVE_TIMEOUT; | ||
| 705 | } | ||
| 701 | if (pair_record) { | 706 | if (pair_record) { |
| 702 | pair_record_get_host_id(pair_record, &host_id); | 707 | pair_record_get_host_id(pair_record, &host_id); |
| 703 | } | 708 | } |
| @@ -707,6 +712,8 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new_with_handshake(idevi | |||
| 707 | 712 | ||
| 708 | if (LOCKDOWN_E_SUCCESS == ret && !pair_record) { | 713 | if (LOCKDOWN_E_SUCCESS == ret && !pair_record) { |
| 709 | /* attempt pairing */ | 714 | /* attempt pairing */ |
| 715 | free(host_id); | ||
| 716 | host_id = NULL; | ||
| 710 | ret = lockdownd_pair(client_loc, NULL); | 717 | ret = lockdownd_pair(client_loc, NULL); |
| 711 | } | 718 | } |
| 712 | 719 | ||
| @@ -730,7 +737,17 @@ LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new_with_handshake(idevi | |||
| 730 | 737 | ||
| 731 | if (LOCKDOWN_E_SUCCESS == ret) { | 738 | if (LOCKDOWN_E_SUCCESS == ret) { |
| 732 | if (!host_id) { | 739 | if (!host_id) { |
| 733 | userpref_read_pair_record(client_loc->udid, &pair_record); | 740 | uerr = userpref_read_pair_record(client_loc->udid, &pair_record); |
| 741 | if (uerr == USERPREF_E_READ_ERROR) { | ||
| 742 | debug_info("ERROR: Failed to retrieve pair record for %s", client_loc->udid); | ||
| 743 | return LOCKDOWN_E_RECEIVE_TIMEOUT; | ||
| 744 | } else if (uerr == USERPREF_E_NOENT) { | ||
| 745 | debug_info("ERROR: No pair record for %s", client_loc->udid); | ||
| 746 | return LOCKDOWN_E_INVALID_CONF; | ||
| 747 | } else if (uerr != USERPREF_E_SUCCESS) { | ||
| 748 | debug_info("ERROR: Failed to retrieve or parse pair record for %s", client_loc->udid); | ||
| 749 | return LOCKDOWN_E_INVALID_CONF; | ||
| 750 | } | ||
| 734 | if (pair_record) { | 751 | if (pair_record) { |
| 735 | pair_record_get_host_id(pair_record, &host_id); | 752 | pair_record_get_host_id(pair_record, &host_id); |
| 736 | plist_free(pair_record); | 753 | plist_free(pair_record); |
| @@ -894,9 +911,16 @@ static lockdownd_error_t lockdownd_do_pair(lockdownd_client_t client, lockdownd_ | |||
| 894 | lockdownd_get_value(client, NULL, "WiFiAddress", &wifi_node); | 911 | lockdownd_get_value(client, NULL, "WiFiAddress", &wifi_node); |
| 895 | } else { | 912 | } else { |
| 896 | /* use existing pair record */ | 913 | /* use existing pair record */ |
| 897 | userpref_read_pair_record(client->udid, &pair_record_plist); | 914 | userpref_error_t uerr = userpref_read_pair_record(client->udid, &pair_record_plist); |
| 898 | if (!pair_record_plist) { | 915 | if (uerr == USERPREF_E_READ_ERROR) { |
| 899 | return LOCKDOWN_E_INVALID_HOST_ID; | 916 | debug_info("ERROR: Failed to retrieve pair record for %s", client->udid); |
| 917 | return LOCKDOWN_E_RECEIVE_TIMEOUT; | ||
| 918 | } else if (uerr == USERPREF_E_NOENT) { | ||
| 919 | debug_info("ERROR: No pair record for %s", client->udid); | ||
| 920 | return LOCKDOWN_E_INVALID_CONF; | ||
| 921 | } else if (uerr != USERPREF_E_SUCCESS) { | ||
| 922 | debug_info("ERROR: Failed to retrieve or parse pair record for %s", client->udid); | ||
| 923 | return LOCKDOWN_E_INVALID_CONF; | ||
| 900 | } | 924 | } |
| 901 | } | 925 | } |
| 902 | } | 926 | } |
| @@ -1226,9 +1250,17 @@ static lockdownd_error_t lockdownd_build_start_service_request(lockdownd_client_ | |||
| 1226 | if (send_escrow_bag) { | 1250 | if (send_escrow_bag) { |
| 1227 | /* get the pairing record */ | 1251 | /* get the pairing record */ |
| 1228 | plist_t pair_record = NULL; | 1252 | plist_t pair_record = NULL; |
| 1229 | userpref_read_pair_record(client->udid, &pair_record); | 1253 | userpref_error_t uerr = userpref_read_pair_record(client->udid, &pair_record); |
| 1230 | if (!pair_record) { | 1254 | if (uerr == USERPREF_E_READ_ERROR) { |
| 1231 | debug_info("ERROR: failed to read pair record for device: %s", client->udid); | 1255 | debug_info("ERROR: Failed to retrieve pair record for %s", client->udid); |
| 1256 | plist_free(dict); | ||
| 1257 | return LOCKDOWN_E_RECEIVE_TIMEOUT; | ||
| 1258 | } else if (uerr == USERPREF_E_NOENT) { | ||
| 1259 | debug_info("ERROR: No pair record for %s", client->udid); | ||
| 1260 | plist_free(dict); | ||
| 1261 | return LOCKDOWN_E_INVALID_CONF; | ||
| 1262 | } else if (uerr != USERPREF_E_SUCCESS) { | ||
| 1263 | debug_info("ERROR: Failed to retrieve or parse pair record for %s", client->udid); | ||
| 1232 | plist_free(dict); | 1264 | plist_free(dict); |
| 1233 | return LOCKDOWN_E_INVALID_CONF; | 1265 | return LOCKDOWN_E_INVALID_CONF; |
| 1234 | } | 1266 | } |
