diff options
author | Martin Szulecki | 2013-12-02 18:29:46 +0100 |
---|---|---|
committer | Martin Szulecki | 2013-12-02 18:29:46 +0100 |
commit | 3eaa1a86cd41a385f0ca62e7f2a297454dd32e22 (patch) | |
tree | 09b2521977b07cc8ed541dcc6b9ee0ee328a42a3 | |
parent | 8d4e97d4e43d854ca0cbfae7c85086fbea22928f (diff) | |
download | idevicerestore-3eaa1a86cd41a385f0ca62e7f2a297454dd32e22.tar.gz idevicerestore-3eaa1a86cd41a385f0ca62e7f2a297454dd32e22.tar.bz2 |
idevicerestore: Make personalization work in cases where no TSS is provided
This fixes sending components to old devices like the iPhone1,1.
-rw-r--r-- | src/idevicerestore.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/src/idevicerestore.c b/src/idevicerestore.c index 133141d..f89f772 100644 --- a/src/idevicerestore.c +++ b/src/idevicerestore.c @@ -1607,34 +1607,32 @@ int personalize_component(const char *component_name, const unsigned char* compo unsigned char* stitched_component = NULL; unsigned int stitched_component_size = 0; - if (tss_response) { - if (tss_response_get_ap_img4_ticket(tss_response, &component_blob, &component_blob_size) == 0) { - /* stitch ApImg4Ticket into IMG4 file */ - img4_stitch_component(component_name, component_data, component_size, component_blob, component_blob_size, &stitched_component, &stitched_component_size); - } else { - /* try to get blob for current component from tss response */ - if (tss_response_get_blob_by_entry(tss_response, component_name, &component_blob) < 0) { - debug("NOTE: No SHSH blob found for component %s\n", component_name); - } - - if (component_blob != NULL) { - if (img3_stitch_component(component_name, component_data, component_size, component_blob, 64, &stitched_component, &stitched_component_size) < 0) { - error("ERROR: Unable to replace %s IMG3 signature\n", component_name); - free(component_blob); - return -1; - } - } else { - info("Not personalizing component %s...\n", component_name); - stitched_component = (unsigned char*)malloc(component_size); - if (stitched_component) { - stitched_component_size = component_size; - memcpy(stitched_component, component_data, component_size); - } - } + if (tss_response && tss_response_get_ap_img4_ticket(tss_response, &component_blob, &component_blob_size) == 0) { + /* stitch ApImg4Ticket into IMG4 file */ + img4_stitch_component(component_name, component_data, component_size, component_blob, component_blob_size, &stitched_component, &stitched_component_size); + } else { + /* try to get blob for current component from tss response */ + if (tss_response && tss_response_get_blob_by_entry(tss_response, component_name, &component_blob) < 0) { + debug("NOTE: No SHSH blob found for component %s\n", component_name); + } - if (component_blob) + if (component_blob != NULL) { + if (img3_stitch_component(component_name, component_data, component_size, component_blob, 64, &stitched_component, &stitched_component_size) < 0) { + error("ERROR: Unable to replace %s IMG3 signature\n", component_name); free(component_blob); + return -1; + } + } else { + info("Not personalizing component %s...\n", component_name); + stitched_component = (unsigned char*)malloc(component_size); + if (stitched_component) { + stitched_component_size = component_size; + memcpy(stitched_component, component_data, component_size); + } } + + if (component_blob) + free(component_blob); } if (idevicerestore_debug) { |