summaryrefslogtreecommitdiffstats
path: root/src/tss.c
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2023-11-09 20:25:38 +0100
committerGravatar Nikias Bassen2023-11-09 20:25:38 +0100
commit10c15d596eb54c9b97cd7e6323ac8416349ca225 (patch)
tree251b8375da43cf162787472323163a69ef9e8d91 /src/tss.c
parent6085ed7429986c7dec579fe1f1303ae6651ea1f2 (diff)
downloadidevicerestore-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.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/tss.c b/src/tss.c
index 5e676f4..e9d68f3 100644
--- a/src/tss.c
+++ b/src/tss.c
@@ -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;
}
}