aboutsummaryrefslogtreecommitdiff
path: root/launcher/InstanceImportTask.cpp
diff options
context:
space:
mode:
authortimoreo <contact@timoreo.fr>2022-09-13 14:00:10 +0200
committerRachel Powers <508861+Ryex@users.noreply.github.com>2023-05-05 15:05:17 -0700
commit565202c99004a13f4d6b9bad6ec1e0634fb280fb (patch)
treeb71a8da4ca41b025664d61d229972d007debf88e /launcher/InstanceImportTask.cpp
parent63c21c53af457673a836915ae7351111c980a4bf (diff)
downloadPrismLauncher-565202c99004a13f4d6b9bad6ec1e0634fb280fb.tar.gz
PrismLauncher-565202c99004a13f4d6b9bad6ec1e0634fb280fb.tar.bz2
PrismLauncher-565202c99004a13f4d6b9bad6ec1e0634fb280fb.zip
Added a protection against giving a mod url
Signed-off-by: timoreo <contact@timoreo.fr>
Diffstat (limited to 'launcher/InstanceImportTask.cpp')
-rw-r--r--launcher/InstanceImportTask.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp
index ef221bf9..4d5193ba 100644
--- a/launcher/InstanceImportTask.cpp
+++ b/launcher/InstanceImportTask.cpp
@@ -106,14 +106,21 @@ void InstanceImportTask::executeTask()
connect(req, &NetJob::failed, this, &InstanceImportTask::downloadFailed);
connect(req, &NetJob::succeeded, [array, this] {
auto doc = Json::requireDocument(*array);
- // Have to use ensureString then use QUrl to get proper url encoding
- m_sourceUrl = QUrl(
- Json::ensureString(Json::ensureObject(Json::ensureObject(doc.object()), "data"), "downloadUrl", "", "downloadUrl"));
- if (!m_sourceUrl.isValid()) {
- emitFailed(tr("The modpack is blocked ! Please download it manually"));
- return;
+ // No way to find out if it's a mod or a modpack before here
+ // And also we need to check if it ends with .zip, instead of any better way
+ auto fileName = Json::ensureString(Json::ensureObject(Json::ensureObject(doc.object()), "data"), "fileName");
+ if (fileName.endsWith(".zip")) {
+ // Have to use ensureString then use QUrl to get proper url encoding
+ m_sourceUrl = QUrl(
+ Json::ensureString(Json::ensureObject(Json::ensureObject(doc.object()), "data"), "downloadUrl", "", "downloadUrl"));
+ if (!m_sourceUrl.isValid()) {
+ emitFailed(tr("The modpack is blocked ! Please download it manually"));
+ return;
+ }
+ downloadFromUrl();
+ } else {
+ emitFailed(tr("This url isn't a valid modpack !"));
}
- downloadFromUrl();
});
connect(req, &NetJob::progress, this, &InstanceImportTask::downloadProgressChanged);
connect(req, &NetJob::stepProgress, this, &InstanceImportTask::propogateStepProgress);