diff options
author | Nikias Bassen | 2023-11-09 20:25:38 +0100 |
---|---|---|
committer | Nikias Bassen | 2023-11-09 20:25:38 +0100 |
commit | 10c15d596eb54c9b97cd7e6323ac8416349ca225 (patch) | |
tree | 251b8375da43cf162787472323163a69ef9e8d91 /src/tss.c | |
parent | 6085ed7429986c7dec579fe1f1303ae6651ea1f2 (diff) | |
download | idevicerestore-10c15d596eb54c9b97cd7e6323ac8416349ca225.tar.gz idevicerestore-10c15d596eb54c9b97cd7e6323ac8416349ca225.tar.bz2 |
Fix update restore by making sure the premanifest is properly generated
Diffstat (limited to 'src/tss.c')
-rw-r--r-- | src/tss.c | 31 |
1 files changed, 25 insertions, 6 deletions
@@ -582,8 +582,15 @@ int tss_request_add_ap_recovery_tags(plist_t request, plist_t parameters, plist_ continue; } - if (!_plist_dict_get_bool(info_dict, "IsFirmwarePayload") && !_plist_dict_get_bool(info_dict, "IsSecondaryFirmwarePayload") && !_plist_dict_get_bool(info_dict, "IsFUDFirmware")) { - debug("DEBUG: %s: Skipping '%s' as it is neither firmware nor secondary nor FUD firmware payload\n", __func__, key); + if (!_plist_dict_get_bool(info_dict, "IsFirmwarePayload") + && !_plist_dict_get_bool(info_dict, "IsSecondaryFirmwarePayload") + && !_plist_dict_get_bool(info_dict, "IsFUDFirmware") + && !_plist_dict_get_bool(info_dict, "IsLoadedByiBoot") + && !_plist_dict_get_bool(info_dict, "IsEarlyAccessFirmware") + && !_plist_dict_get_bool(info_dict, "IsiBootEANFirmware") + && !_plist_dict_get_bool(info_dict, "IsiBootNonEssentialFirmware")) + { + debug("DEBUG: %s: Skipping '%s' as it is not a firmware payload\n", __func__, key); continue; } } @@ -679,14 +686,26 @@ int tss_request_add_ap_tags(plist_t request, plist_t parameters, plist_t overrid } } - if (_plist_dict_get_bool(parameters, "_OnlyFWComponents")) { + int is_fw_payload = _plist_dict_get_bool(info_dict, "IsFirmwarePayload") + || _plist_dict_get_bool(info_dict, "IsSecondaryFirmwarePayload") + || _plist_dict_get_bool(info_dict, "IsFUDFirmware") + || _plist_dict_get_bool(info_dict, "IsLoadedByiBoot") + || _plist_dict_get_bool(info_dict, "IsEarlyAccessFirmware") + || _plist_dict_get_bool(info_dict, "IsiBootEANFirmware") + || _plist_dict_get_bool(info_dict, "IsiBootNonEssentialFirmware"); + + if (_plist_dict_get_bool(parameters, "_OnlyFWOrTrustedComponents")) { + if (!_plist_dict_get_bool(manifest_entry, "Trusted") && !is_fw_payload) { + debug("DEBUG: %s: Skipping '%s' as it is neither firmware payload nor trusted\n", __func__, key); + continue; + } + } else if (_plist_dict_get_bool(parameters, "_OnlyFWComponents")) { if (!_plist_dict_get_bool(manifest_entry, "Trusted")) { debug("DEBUG: %s: Skipping '%s' as it is not trusted\n", __func__, key); continue; } - - if (!_plist_dict_get_bool(info_dict, "IsFirmwarePayload") && !_plist_dict_get_bool(info_dict, "IsSecondaryFirmwarePayload") && !_plist_dict_get_bool(info_dict, "IsFUDFirmware")) { - debug("DEBUG: %s: Skipping '%s' as it is neither firmware nor secondary nor FUD firmware payload\n", __func__, key); + if (!is_fw_payload) { + debug("DEBUG: %s: Skipping '%s' as it is not a firmware payload\n", __func__, key); continue; } } |