diff options
author | Martin Szulecki | 2013-11-19 22:39:32 +0100 |
---|---|---|
committer | Martin Szulecki | 2013-11-19 22:39:32 +0100 |
commit | 641d5ddcae673f8511578258f8ab5b5f0add90dc (patch) | |
tree | 6b4ae97d86603fb4679c38cbcf3d10112df9e77d | |
parent | 2daf436af42718b3735921751604c584f7f55834 (diff) | |
download | idevicerestore-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.c | 4 | ||||
-rw-r--r-- | src/tss.c | 12 |
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 */ @@ -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)); |