aboutsummaryrefslogtreecommitdiff
path: root/primedev/mods/autodownload/moddownloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'primedev/mods/autodownload/moddownloader.cpp')
-rw-r--r--primedev/mods/autodownload/moddownloader.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/primedev/mods/autodownload/moddownloader.cpp b/primedev/mods/autodownload/moddownloader.cpp
index 3a946263..feaa08ea 100644
--- a/primedev/mods/autodownload/moddownloader.cpp
+++ b/primedev/mods/autodownload/moddownloader.cpp
@@ -92,6 +92,13 @@ void ModDownloader::FetchModsListFromAPI()
verifiedModsJson.Parse(readBuffer);
for (auto i = verifiedModsJson.MemberBegin(); i != verifiedModsJson.MemberEnd(); ++i)
{
+ // Format testing
+ if (!i->value.HasMember("DependencyPrefix") || !i->value.HasMember("Versions"))
+ {
+ spdlog::warn("Verified mods manifesto format is unrecognized, skipping loading.");
+ return;
+ }
+
std::string name = i->name.GetString();
std::string dependency = i->value["DependencyPrefix"].GetString();
@@ -101,6 +108,13 @@ void ModDownloader::FetchModsListFromAPI()
for (auto& attribute : versions.GetArray())
{
assert(attribute.IsObject());
+ // Format testing
+ if (!attribute.HasMember("Version") || !attribute.HasMember("Checksum"))
+ {
+ spdlog::warn("Verified mods manifesto format is unrecognized, skipping loading.");
+ return;
+ }
+
std::string version = attribute["Version"].GetString();
std::string checksum = attribute["Checksum"].GetString();
modVersions.insert({version, {.checksum = checksum}});