summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2013-11-19 22:39:32 +0100
committerGravatar Martin Szulecki2013-11-19 22:39:32 +0100
commit641d5ddcae673f8511578258f8ab5b5f0add90dc (patch)
tree6b4ae97d86603fb4679c38cbcf3d10112df9e77d
parent2daf436af42718b3735921751604c584f7f55834 (diff)
downloadidevicerestore-641d5ddcae673f8511578258f8ab5b5f0add90dc.tar.gz
idevicerestore-641d5ddcae673f8511578258f8ab5b5f0add90dc.tar.bz2
tss: Make ApNonce parameter optional to fix restore on iPhone 3GS and older
-rw-r--r--src/idevicerestore.c4
-rw-r--r--src/tss.c12
2 files changed, 10 insertions, 6 deletions
diff --git a/src/idevicerestore.c b/src/idevicerestore.c
index 3b35ba8..c1c91ac 100644
--- a/src/idevicerestore.c
+++ b/src/idevicerestore.c
@@ -1409,7 +1409,9 @@ int get_tss_response(struct idevicerestore_client_t* client, plist_t build_ident
/* populate parameters */
plist_t parameters = plist_new_dict();
plist_dict_insert_item(parameters, "ApECID", plist_new_uint(client->ecid));
- plist_dict_insert_item(parameters, "ApNonce", plist_new_data((const char*)client->nonce, client->nonce_size));
+ if (client->nonce) {
+ plist_dict_insert_item(parameters, "ApNonce", plist_new_data((const char*)client->nonce, client->nonce_size));
+ }
plist_dict_insert_item(parameters, "ApProductionMode", plist_new_bool(1));
/* create basic request */
diff --git a/src/tss.c b/src/tss.c
index 3b0d478..66e09ce 100644
--- a/src/tss.c
+++ b/src/tss.c
@@ -134,12 +134,14 @@ int tss_request_add_ap_img3_tags(plist_t request, plist_t parameters) {
/* ApNonce */
node = plist_dict_get_item(parameters, "ApNonce");
- if (!node || plist_get_node_type(node) != PLIST_DATA) {
- error("ERROR: Unable to find required ApNonce in parameters\n");
- return -1;
+ if (node) {
+ if (plist_get_node_type(node) != PLIST_DATA) {
+ error("ERROR: Unable to find required ApNonce in parameters\n");
+ return -1;
+ }
+ plist_dict_insert_item(request, "ApNonce", plist_copy(node));
+ node = NULL;
}
- plist_dict_insert_item(request, "ApNonce", plist_copy(node));
- node = NULL;
/* @APTicket */
plist_dict_insert_item(request, "@APTicket", plist_new_bool(1));