diff options
Diffstat (limited to 'src')
-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 | } |