summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ipsw.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ipsw.c b/src/ipsw.c
index 8e3d598..7052e8c 100644
--- a/src/ipsw.c
+++ b/src/ipsw.c
@@ -289,8 +289,14 @@ static int get_latest_fw(plist_t version_data, const char* product, char** fwurl
sprintf(majstr, FMT_qu, (long long unsigned int)major);
n1 = plist_access_path(version_data, 7, "MobileDeviceSoftwareVersionsByVersion", majstr, "MobileDeviceSoftwareVersions", product, "Unknown", "Universal", "Restore");
if (!n1) {
- error("%s: ERROR: Can't get Unknown/Universal/Restore node?!\n", __func__);
- return -1;
+ // if not found, increase major version number by one and try again
+ major++;
+ sprintf(majstr, FMT_qu, (long long unsigned int)major);
+ n1 = plist_access_path(version_data, 7, "MobileDeviceSoftwareVersionsByVersion", majstr, "MobileDeviceSoftwareVersions", product, "Unknown", "Universal", "Restore");
+ if (!n1) {
+ error("%s: ERROR: Can't get Unknown/Universal/Restore node?!\n", __func__);
+ return -1;
+ }
}
n2 = plist_dict_get_item(n1, "BuildVersion");