summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2024-05-14 09:36:42 +0200
committerGravatar Nikias Bassen2024-05-14 09:36:42 +0200
commit653349a1eac8c52776dcfd17cb82bbeac272fb71 (patch)
treedd2f372e661626f465cffaafff74f5427e910edb
parente6d8c0b9d53e5f3c9100cfc8c88626be45c98b85 (diff)
downloadidevicerestore-653349a1eac8c52776dcfd17cb82bbeac272fb71.tar.gz
idevicerestore-653349a1eac8c52776dcfd17cb82bbeac272fb71.tar.bz2
Require libplist 2.6.0
-rw-r--r--configure.ac2
-rw-r--r--src/ace3.c2
-rw-r--r--src/idevicerestore.c24
-rw-r--r--src/img4.c18
-rw-r--r--src/restore.c73
-rw-r--r--src/tss.c10
6 files changed, 57 insertions, 72 deletions
diff --git a/configure.ac b/configure.ac
index 4c39d42..0b5fcea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,7 @@ fi
LIBIRECOVERY_VERSION=1.2.0
LIBIMOBILEDEVICE_VERSION=1.3.0
LIBUSBMUXD_VERSION=2.0.2
-LIBPLIST_VERSION=2.5.0
+LIBPLIST_VERSION=2.6.0
LIMD_GLUE_VERSION=1.2.0
LIBZIP_VERSION=1.0
LIBCURL_VERSION=7.0
diff --git a/src/ace3.c b/src/ace3.c
index d280196..b96e6b4 100644
--- a/src/ace3.c
+++ b/src/ace3.c
@@ -96,7 +96,7 @@ int ace3_create_binary(const unsigned char* uarp_fw, size_t uarp_size, uint64_t
plist_t p_im4m = plist_dict_get_item(tss, "USBPortController1,Ticket");
uint64_t im4m_size = 0;
- const uint8_t* im4m = plist_get_data_ptr(p_im4m, &im4m_size);
+ const char* im4m = plist_get_data_ptr(p_im4m, &im4m_size);
struct uarp_header* uarp_hdr = (struct uarp_header*)uarp_fw;
uint32_t uarp_hdr_size = be32toh(uarp_hdr->header_size);
diff --git a/src/idevicerestore.c b/src/idevicerestore.c
index ece455e..f27c357 100644
--- a/src/idevicerestore.c
+++ b/src/idevicerestore.c
@@ -771,7 +771,7 @@ int idevicerestore_start(struct idevicerestore_client_t* client)
usbf = plist_copy(usbf);
plist_dict_remove_item(usbf, "Info");
plist_dict_set_item(parameters, "USBPortController1,USBFirmware", usbf);
- plist_dict_set_item(parameters, "USBPortController1,Nonce", plist_new_data(pdfu_nonce, pdfu_nsize));
+ plist_dict_set_item(parameters, "USBPortController1,Nonce", plist_new_data((const char*)pdfu_nonce, pdfu_nsize));
plist_t request = tss_request_new(NULL);
if (request == NULL) {
@@ -1236,7 +1236,7 @@ int idevicerestore_start(struct idevicerestore_client_t* client)
}
if (client->mode == MODE_RESTORE && client->root_ticket) {
- plist_t ap_ticket = plist_new_data(client->root_ticket, client->root_ticket_len);
+ plist_t ap_ticket = plist_new_data((char*)client->root_ticket, client->root_ticket_len);
if (!ap_ticket) {
error("ERROR: Failed to create ApImg4Ticket node value.\n");
return -1;
@@ -2263,14 +2263,14 @@ int get_tss_response(struct idevicerestore_client_t* client, plist_t build_ident
plist_t parameters = plist_new_dict();
plist_dict_set_item(parameters, "ApECID", plist_new_uint(client->ecid));
if (client->nonce) {
- plist_dict_set_item(parameters, "ApNonce", plist_new_data(client->nonce, client->nonce_size));
+ plist_dict_set_item(parameters, "ApNonce", plist_new_data((const char*)client->nonce, client->nonce_size));
}
unsigned char* sep_nonce = NULL;
unsigned int sep_nonce_size = 0;
get_sep_nonce(client, &sep_nonce, &sep_nonce_size);
if (sep_nonce) {
- plist_dict_set_item(parameters, "ApSepNonce", plist_new_data(sep_nonce, sep_nonce_size));
+ plist_dict_set_item(parameters, "ApSepNonce", plist_new_data((const char*)sep_nonce, sep_nonce_size));
free(sep_nonce);
}
@@ -2387,7 +2387,7 @@ int get_recoveryos_root_ticket_tss_response(struct idevicerestore_client_t* clie
/* ApNonce */
if (client->nonce) {
- plist_dict_set_item(parameters, "ApNonce", plist_new_data(client->nonce, client->nonce_size));
+ plist_dict_set_item(parameters, "ApNonce", plist_new_data((const char*)client->nonce, client->nonce_size));
}
unsigned char* sep_nonce = NULL;
unsigned int sep_nonce_size = 0;
@@ -2395,7 +2395,7 @@ int get_recoveryos_root_ticket_tss_response(struct idevicerestore_client_t* clie
/* ApSepNonce */
if (sep_nonce) {
- plist_dict_set_item(parameters, "ApSepNonce", plist_new_data(sep_nonce, sep_nonce_size));
+ plist_dict_set_item(parameters, "ApSepNonce", plist_new_data((const char*)sep_nonce, sep_nonce_size));
free(sep_nonce);
}
@@ -2496,7 +2496,7 @@ int get_recovery_os_local_policy_tss_response(
uint8_t digest[SHA384_DIGEST_LENGTH];
SHA384(lpol_file, lpol_file_length, digest);
plist_t lpol = plist_new_dict();
- plist_dict_set_item(lpol, "Digest", plist_new_data(digest, SHA384_DIGEST_LENGTH));
+ plist_dict_set_item(lpol, "Digest", plist_new_data((char*)digest, SHA384_DIGEST_LENGTH));
plist_dict_set_item(lpol, "Trusted", plist_new_bool(1));
plist_dict_set_item(parameters, "Ap,LocalPolicy", lpol);
@@ -2518,7 +2518,7 @@ int get_recovery_os_local_policy_tss_response(
for (i = 0; i < 16; i++) {
vol_uuid[i] = (unsigned char)vuuid[i];
}
- plist_dict_set_item(parameters, "Ap,VolumeUUID", plist_new_data(vol_uuid, 16));
+ plist_dict_set_item(parameters, "Ap,VolumeUUID", plist_new_data((char*)vol_uuid, 16));
/* create basic request */
request = tss_request_new(NULL);
@@ -2566,14 +2566,14 @@ int get_local_policy_tss_response(struct idevicerestore_client_t* client, plist_
plist_dict_set_item(parameters, "ApECID", plist_new_uint(client->ecid));
plist_dict_set_item(parameters, "Ap,LocalBoot", plist_new_bool(0));
if (client->nonce) {
- plist_dict_set_item(parameters, "ApNonce", plist_new_data(client->nonce, client->nonce_size));
+ plist_dict_set_item(parameters, "ApNonce", plist_new_data((const char*)client->nonce, client->nonce_size));
}
unsigned char* sep_nonce = NULL;
unsigned int sep_nonce_size = 0;
get_sep_nonce(client, &sep_nonce, &sep_nonce_size);
if (sep_nonce) {
- plist_dict_set_item(parameters, "ApSepNonce", plist_new_data(sep_nonce, sep_nonce_size));
+ plist_dict_set_item(parameters, "ApSepNonce", plist_new_data((const char*)sep_nonce, sep_nonce_size));
free(sep_nonce);
}
@@ -2591,7 +2591,7 @@ int get_local_policy_tss_response(struct idevicerestore_client_t* client, plist_
uint8_t digest[SHA384_DIGEST_LENGTH];
SHA384(lpol_file, lpol_file_length, digest);
plist_t lpol = plist_new_dict();
- plist_dict_set_item(lpol, "Digest", plist_new_data(digest, SHA384_DIGEST_LENGTH));
+ plist_dict_set_item(lpol, "Digest", plist_new_data((char*)digest, SHA384_DIGEST_LENGTH));
plist_dict_set_item(lpol, "Trusted", plist_new_bool(1));
plist_dict_set_item(parameters, "Ap,LocalPolicy", lpol);
@@ -2603,7 +2603,7 @@ int get_local_policy_tss_response(struct idevicerestore_client_t* client, plist_
// Hash it and add it as Ap,NextStageIM4MHash
uint8_t hash[SHA384_DIGEST_LENGTH];
SHA384(ticket, ticket_length, hash);
- plist_dict_set_item(parameters, "Ap,NextStageIM4MHash", plist_new_data(hash, SHA384_DIGEST_LENGTH));
+ plist_dict_set_item(parameters, "Ap,NextStageIM4MHash", plist_new_data((char*)hash, SHA384_DIGEST_LENGTH));
/* create basic request */
request = tss_request_new(NULL);
diff --git a/src/img4.c b/src/img4.c
index 2d1cc43..9a0cb29 100644
--- a/src/img4.c
+++ b/src/img4.c
@@ -457,7 +457,7 @@ int img4_stitch_component(const char* component_name, const unsigned char* compo
return -1;
}
uint64_t ucon_size = 0;
- const uint8_t* ucon_data = plist_get_data_ptr(dt, &ucon_size);
+ const char* ucon_data = plist_get_data_ptr(dt, &ucon_size);
if (!ucon_data) {
error("ERROR: %s: Missing ucon data in %s-TBM dictionary\n", __func__, component_name);
return -1;
@@ -468,7 +468,7 @@ int img4_stitch_component(const char* component_name, const unsigned char* compo
return -1;
}
uint64_t ucer_size = 0;
- const uint8_t* ucer_data = plist_get_data_ptr(dt, &ucer_size);
+ const char* ucer_data = plist_get_data_ptr(dt, &ucer_size);
if (!ucer_data) {
error("ERROR: %s: Missing ucer data in %s-TBM dictionary\n", __func__, component_name);
return -1;
@@ -705,13 +705,11 @@ static void _manifest_write_component(unsigned char **p, unsigned int *length, c
node = plist_dict_get_item(comp, "Digest");
if (node) {
- uint8_t *digest = NULL;
uint64_t digest_len = 0;
- plist_get_data_val(node, &digest, &digest_len);
+ const char *digest = plist_get_data_ptr(node, &digest_len);
if (digest_len > 0) {
- _manifest_write_key_value(&tmp, &tmp_len, "DGST", ASN1_OCTET_STRING, digest, digest_len);
+ _manifest_write_key_value(&tmp, &tmp_len, "DGST", ASN1_OCTET_STRING, (void*)digest, digest_len);
}
- free(digest);
}
node = plist_dict_get_item(comp, "Trusted");
@@ -740,9 +738,8 @@ static void _manifest_write_component(unsigned char **p, unsigned int *length, c
node = plist_dict_get_item(comp, "TBMDigests");
if (node) {
- uint8_t *data = NULL;
uint64_t datalen = 0;
- plist_get_data_val(node, &data, &datalen);
+ const char *data = plist_get_data_ptr(node, &datalen);
const char *tbmtag = NULL;
if (!strcmp(tag, "sepi")) {
tbmtag = "tbms";
@@ -752,9 +749,8 @@ static void _manifest_write_component(unsigned char **p, unsigned int *length, c
if (!tbmtag) {
error("ERROR: Unexpected TMBDigests for comp '%s'\n", tag);
} else {
- _manifest_write_key_value(&tmp, &tmp_len, tbmtag, ASN1_OCTET_STRING, data, datalen);
+ _manifest_write_key_value(&tmp, &tmp_len, tbmtag, ASN1_OCTET_STRING, (void*)data, datalen);
}
- free(data);
}
asn1_write_element_header(ASN1_SET | ASN1_CONSTRUCTED, tmp_len, &inner_start, &inner_length);
@@ -907,7 +903,7 @@ int img4_create_local_manifest(plist_t request, plist_t build_identity, plist_t*
length += hdr_len;
- *manifest = plist_new_data(buf, length);
+ *manifest = plist_new_data((char*)buf, length);
free(buf);
diff --git a/src/restore.c b/src/restore.c
index 0e55338..050ee3b 100644
--- a/src/restore.c
+++ b/src/restore.c
@@ -976,7 +976,7 @@ int restore_send_recovery_os_root_ticket(restored_client_t restore, struct idevi
if (client->root_ticket) {
dict = plist_new_dict();
- plist_dict_set_item(dict, "RecoveryOSRootTicketData", plist_new_data(client->root_ticket, client->root_ticket_len));
+ plist_dict_set_item(dict, "RecoveryOSRootTicketData", plist_new_data((char*)client->root_ticket, client->root_ticket_len));
} else {
unsigned char* data = NULL;
unsigned int len = 0;
@@ -1000,7 +1000,7 @@ int restore_send_recovery_os_root_ticket(restored_client_t restore, struct idevi
dict = plist_new_dict();
if (data && (len > 0)) {
- plist_dict_set_item(dict, "RootTicketData", plist_new_data(data, len));
+ plist_dict_set_item(dict, "RootTicketData", plist_new_data((char*)data, len));
} else {
info("NOTE: not sending RootTicketData (no data present)\n");
}
@@ -1029,7 +1029,7 @@ int restore_send_root_ticket(restored_client_t restore, struct idevicerestore_cl
if (client->root_ticket) {
dict = plist_new_dict();
- plist_dict_set_item(dict, "RootTicketData", plist_new_data(client->root_ticket, client->root_ticket_len));
+ plist_dict_set_item(dict, "RootTicketData", plist_new_data((char*)client->root_ticket, client->root_ticket_len));
} else {
unsigned char* data = NULL;
unsigned int len = 0;
@@ -1053,7 +1053,7 @@ int restore_send_root_ticket(restored_client_t restore, struct idevicerestore_cl
dict = plist_new_dict();
if (data && (len > 0)) {
- plist_dict_set_item(dict, "RootTicketData", plist_new_data(data, len));
+ plist_dict_set_item(dict, "RootTicketData", plist_new_data((char*)data, len));
} else {
info("NOTE: not sending RootTicketData (no data present)\n");
}
@@ -1118,7 +1118,7 @@ int restore_send_component(restored_client_t restore, struct idevicerestore_clie
}
dict = plist_new_dict();
- blob = plist_new_data(data, size);
+ blob = plist_new_data((char*)data, size);
char compkeyname[256];
sprintf(compkeyname, "%sFile", component_name);
plist_dict_set_item(dict, compkeyname, blob);
@@ -1279,7 +1279,7 @@ int restore_send_nor(restored_client_t restore, struct idevicerestore_client_t*
}
dict = plist_new_dict();
- plist_dict_set_item(dict, "LlbImageData", plist_new_data(llb_data, llb_size));
+ plist_dict_set_item(dict, "LlbImageData", plist_new_data((char*)llb_data, llb_size));
free(llb_data);
if (flash_version_1) {
@@ -1339,13 +1339,13 @@ int restore_send_nor(restored_client_t restore, struct idevicerestore_client_t*
component_size = 0;
if (flash_version_1) {
- plist_dict_set_item(norimage, component, plist_new_data(nor_data, nor_size));
+ plist_dict_set_item(norimage, component, plist_new_data((char*)nor_data, nor_size));
} else {
/* make sure iBoot is the first entry in the array */
if (!strncmp("iBoot", component, 5)) {
- plist_array_insert_item(norimage, plist_new_data(nor_data, nor_size), 0);
+ plist_array_insert_item(norimage, plist_new_data((char*)nor_data, nor_size), 0);
} else {
- plist_array_append_item(norimage, plist_new_data(nor_data, nor_size));
+ plist_array_append_item(norimage, plist_new_data((char*)nor_data, nor_size));
}
}
@@ -1381,7 +1381,7 @@ int restore_send_nor(restored_client_t restore, struct idevicerestore_client_t*
return -1;
}
- plist_dict_set_item(dict, "RestoreSEPImageData", plist_new_data(personalized_data, personalized_size));
+ plist_dict_set_item(dict, "RestoreSEPImageData", plist_new_data((char*)personalized_data, personalized_size));
free(personalized_data);
personalized_data = NULL;
personalized_size = 0;
@@ -1406,7 +1406,7 @@ int restore_send_nor(restored_client_t restore, struct idevicerestore_client_t*
return -1;
}
- plist_dict_set_item(dict, "SEPImageData", plist_new_data(personalized_data, personalized_size));
+ plist_dict_set_item(dict, "SEPImageData", plist_new_data((char*)personalized_data, personalized_size));
free(personalized_data);
personalized_data = NULL;
personalized_size = 0;
@@ -1431,7 +1431,7 @@ int restore_send_nor(restored_client_t restore, struct idevicerestore_client_t*
return -1;
}
- plist_dict_set_item(dict, "SEPPatchImageData", plist_new_data(personalized_data, personalized_size));
+ plist_dict_set_item(dict, "SEPPatchImageData", plist_new_data((char*)personalized_data, personalized_size));
free(personalized_data);
personalized_data = NULL;
personalized_size = 0;
@@ -1510,7 +1510,7 @@ static int restore_sign_bbfw(const char* bbfwtmp, plist_t bbtss, const unsigned
}
unsigned char* buffer = NULL;
- unsigned char* blob = NULL;
+ const unsigned char* blob = NULL;
unsigned char* fdata = NULL;
uint64_t fsize = 0;
uint64_t blob_size = 0;
@@ -1607,9 +1607,8 @@ static int restore_sign_bbfw(const char* bbfwtmp, plist_t bbtss, const unsigned
free(buffer);
buffer = NULL;
- blob = NULL;
blob_size = 0;
- plist_get_data_val(node, &blob, &blob_size);
+ blob = (const unsigned char*)plist_get_data_ptr(node, &blob_size);
if (!blob) {
error("ERROR: could not get %s-Blob data\n", key);
goto leave;
@@ -1626,8 +1625,6 @@ static int restore_sign_bbfw(const char* bbfwtmp, plist_t bbtss, const unsigned
goto leave;
}
}
- free(blob);
- blob = NULL;
fsize = (is_fls ? fls->size : mbn->size);
fdata = (unsigned char*)malloc(fsize);
@@ -1740,9 +1737,8 @@ static int restore_sign_bbfw(const char* bbfwtmp, plist_t bbtss, const unsigned
goto leave;
}
- blob = NULL;
blob_size = 0;
- plist_get_data_val(bbticket, &blob, &blob_size);
+ blob = (const unsigned char*)plist_get_data_ptr(bbticket, &blob_size);
if (!blob) {
error("ERROR: could not get BBTicket data\n");
goto leave;
@@ -1752,8 +1748,6 @@ static int restore_sign_bbfw(const char* bbfwtmp, plist_t bbtss, const unsigned
error("ERROR: could not insert BBTicket to ebl.fls\n");
goto leave;
}
- free(blob);
- blob = NULL;
fsize = fls->size;
fdata = (unsigned char*)malloc(fsize);
@@ -1778,20 +1772,18 @@ static int restore_sign_bbfw(const char* bbfwtmp, plist_t bbtss, const unsigned
}
} else {
// add BBTicket as bbticket.der
- blob = NULL;
blob_size = 0;
- plist_get_data_val(bbticket, &blob, &blob_size);
+ blob = (const unsigned char*)plist_get_data_ptr(bbticket, &blob_size);
if (!blob) {
error("ERROR: could not get BBTicket data\n");
goto leave;
}
- zs = zip_source_buffer(za, blob, blob_size, 1);
+ zs = zip_source_buffer(za, blob, blob_size, 0);
if (!zs) {
error("ERROR: out of memory\n");
goto leave;
}
- blob = NULL;
if (zip_file_add(za, "bbticket.der", zs, ZIP_FL_OVERWRITE) == -1) {
error("ERROR: could not add bbticket.der to archive\n");
@@ -1824,7 +1816,6 @@ leave:
mbn_free(mbn);
fls_free(fls);
free(buffer);
- free(blob);
return res;
}
@@ -1839,7 +1830,7 @@ static int restore_send_baseband_data(restored_client_t restore, struct idevicer
uint64_t bb_nonce_size = 0;
uint64_t bb_chip_id = 0;
plist_t response = NULL;
- uint8_t* buffer = NULL;
+ char* buffer = NULL;
char* bbfwtmp = NULL;
plist_t dict = NULL;
@@ -1860,11 +1851,11 @@ static int restore_send_baseband_data(restored_client_t restore, struct idevicer
}
plist_t bb_snum_node = plist_dict_get_item(arguments, "ChipSerialNo");
if (bb_snum_node && plist_get_node_type(bb_snum_node) == PLIST_DATA) {
- plist_get_data_val(bb_snum_node, &bb_snum, &bb_snum_size);
+ plist_get_data_val(bb_snum_node, (char**)&bb_snum, &bb_snum_size);
}
plist_t bb_nonce_node = plist_dict_get_item(arguments, "Nonce");
if (bb_nonce_node && plist_get_node_type(bb_nonce_node) == PLIST_DATA) {
- plist_get_data_val(bb_nonce_node, &bb_nonce, &bb_nonce_size);
+ plist_get_data_val(bb_nonce_node, (char**)&bb_nonce, &bb_nonce_size);
}
}
@@ -1873,11 +1864,11 @@ static int restore_send_baseband_data(restored_client_t restore, struct idevicer
plist_t parameters = plist_new_dict();
plist_dict_set_item(parameters, "ApECID", plist_new_uint(client->ecid));
if (bb_nonce) {
- plist_dict_set_item(parameters, "BbNonce", plist_new_data(bb_nonce, bb_nonce_size));
+ plist_dict_set_item(parameters, "BbNonce", plist_new_data((const char*)bb_nonce, bb_nonce_size));
}
plist_dict_set_item(parameters, "BbChipID", plist_new_uint(bb_chip_id));
plist_dict_set_item(parameters, "BbGoldCertId", plist_new_uint(bb_cert_id));
- plist_dict_set_item(parameters, "BbSNUM", plist_new_data(bb_snum, bb_snum_size));
+ plist_dict_set_item(parameters, "BbSNUM", plist_new_data((const char*)bb_snum, bb_snum_size));
tss_parameters_add_from_manifest(parameters, build_identity, true);
@@ -2109,7 +2100,7 @@ static int restore_send_image_data(restored_client_t restore, struct idevicerest
error("ERROR: Unable to get personalized component: %s\n", component);
}
- plist_dict_set_item(data_dict, component, plist_new_data(data, size));
+ plist_dict_set_item(data_dict, component, plist_new_data((const char*)data, size));
free(data);
}
}
@@ -2256,7 +2247,7 @@ static plist_t restore_get_se_firmware_data(restored_client_t restore, struct id
error("ERROR: No 'SE ticket' in TSS response, this might not work\n");
}
- plist_dict_set_item(response, "FirmwareData", plist_new_data(component_data, component_size));
+ plist_dict_set_item(response, "FirmwareData", plist_new_data((char*)component_data, component_size));
free(component_data);
component_data = NULL;
component_size = 0;
@@ -2347,7 +2338,7 @@ static plist_t restore_get_savage_firmware_data(restored_client_t restore, struc
*(uint32_t*)(component_data + 4) = htole32((uint32_t)component_size);
component_size += 16;
- plist_dict_set_item(response, "FirmwareData", plist_new_data(component_data, component_size));
+ plist_dict_set_item(response, "FirmwareData", plist_new_data((char*)component_data, component_size));
free(component_data);
component_data = NULL;
component_size = 0;
@@ -2429,7 +2420,7 @@ static plist_t restore_get_yonkers_firmware_data(restored_client_t restore, stru
comp_name = NULL;
plist_t firmware_data = plist_new_dict();
- plist_dict_set_item(firmware_data, "YonkersFirmware", plist_new_data(component_data, component_size));
+ plist_dict_set_item(firmware_data, "YonkersFirmware", plist_new_data((char*)component_data, component_size));
plist_dict_set_item(response, "FirmwareData", firmware_data);
free(component_data);
@@ -2578,7 +2569,7 @@ static plist_t restore_get_rose_firmware_data(restored_client_t restore, struct
ftab_write(ftab, &component_data, &component_size);
ftab_free(ftab);
- plist_dict_set_item(response, "FirmwareData", plist_new_data(component_data, component_size));
+ plist_dict_set_item(response, "FirmwareData", plist_new_data((char*)component_data, component_size));
free(component_data);
component_data = NULL;
component_size = 0;
@@ -2676,7 +2667,7 @@ static plist_t restore_get_veridian_firmware_data(restored_client_t restore, str
plist_to_bin(fw_map, &bin_plist, &bin_size);
plist_free(fw_map);
- plist_dict_set_item(response, "FirmwareData", plist_new_data((uint8_t*)bin_plist, bin_size));
+ plist_dict_set_item(response, "FirmwareData", plist_new_data(bin_plist, bin_size));
free(bin_plist);
return response;
@@ -2798,7 +2789,7 @@ static plist_t restore_get_tcon_firmware_data(restored_client_t restore, struct
return NULL;
}
- plist_dict_set_item(response, "FirmwareData", plist_new_data(component_data, component_size));
+ plist_dict_set_item(response, "FirmwareData", plist_new_data((char*)component_data, component_size));
free(component_data);
component_data = NULL;
component_size = 0;
@@ -2983,7 +2974,7 @@ static plist_t restore_get_timer_firmware_data(restored_client_t restore, struct
ftab_write(ftab, &component_data, &component_size);
ftab_free(ftab);
- plist_dict_set_item(response, "FirmwareData", plist_new_data(component_data, component_size));
+ plist_dict_set_item(response, "FirmwareData", plist_new_data((char*)component_data, component_size));
free(component_data);
component_data = NULL;
component_size = 0;
@@ -3549,7 +3540,7 @@ static int _restore_send_file_data(struct _restore_send_file_data_ctx* rctx, voi
plist_t dict = plist_new_dict();
if (data != NULL) {
// Send a chunk of file data
- plist_dict_set_item(dict, "FileData", plist_new_data(data, size));
+ plist_dict_set_item(dict, "FileData", plist_new_data((char*)data, size));
} else {
// Send FileDataDone to mark end of transfer
plist_dict_set_item(dict, "FileDataDone", plist_new_bool(1));
@@ -3806,7 +3797,7 @@ int restore_send_restore_local_policy(restored_client_t restore, struct idevicer
}
plist_t dict = plist_new_dict();
- plist_dict_set_item(dict, "Ap,LocalPolicy", plist_new_data(data, size));
+ plist_dict_set_item(dict, "Ap,LocalPolicy", plist_new_data((char*)data, size));
int restore_error = restored_send(restore, dict);
if (restore_error != RESTORE_E_SUCCESS) {
diff --git a/src/tss.c b/src/tss.c
index 04d5108..99781ef 100644
--- a/src/tss.c
+++ b/src/tss.c
@@ -961,9 +961,8 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove
comp_name = (isprod) ? "Savage,B0-Prod-Patch" : "Savage,B0-Dev-Patch";
node = plist_dict_get_item(parameters, "Savage,Revision");
if (node && (plist_get_node_type(node) == PLIST_DATA)) {
- unsigned char *savage_rev = NULL;
uint64_t savage_rev_len = 0;
- plist_get_data_val(node, &savage_rev, &savage_rev_len);
+ const unsigned char *savage_rev = (const unsigned char*)plist_get_data_ptr(node, &savage_rev_len);
if (savage_rev_len > 0) {
if (((savage_rev[0] | 0x10) & 0xF0) == 0x30) {
comp_name = (isprod) ? "Savage,B2-Prod-Patch" : "Savage,B2-Dev-Patch";
@@ -971,7 +970,6 @@ int tss_request_add_savage_tags(plist_t request, plist_t parameters, plist_t ove
comp_name = (isprod) ? "Savage,BA-Prod-Patch" : "Savage,BA-Dev-Patch";
}
}
- free(savage_rev);
}
/* add Savage,B?-*-Patch */
@@ -1659,7 +1657,7 @@ static int tss_response_get_data_by_key(plist_t response, const char* name, unsi
return -1;
}
- uint8_t* data = NULL;
+ char* data = NULL;
uint64_t len = 0;
plist_get_data_val(node, &data, &len);
if (data) {
@@ -1718,7 +1716,7 @@ int tss_response_get_blob_by_path(plist_t tss, const char* path, unsigned char**
uint32_t tss_size = 0;
uint64_t blob_size = 0;
char* entry_key = NULL;
- uint8_t* blob_data = NULL;
+ char* blob_data = NULL;
char* entry_path = NULL;
plist_t tss_entry = NULL;
plist_t blob_node = NULL;
@@ -1772,7 +1770,7 @@ int tss_response_get_blob_by_path(plist_t tss, const char* path, unsigned char**
int tss_response_get_blob_by_entry(plist_t response, const char* entry, unsigned char** blob)
{
uint64_t blob_size = 0;
- uint8_t* blob_data = NULL;
+ char* blob_data = NULL;
plist_t blob_node = NULL;
plist_t tss_entry = NULL;