aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2023-02-02 13:47:36 -0800
committerGitHub <noreply@github.com>2023-02-02 13:47:36 -0800
commit3781c64d413802e87fb9fe74d3d6ead6c4e04683 (patch)
tree641cd33cfc0706fec1645be3617f4f1824891657 /launcher/minecraft
parentdeed49574ac344f126eed5fd71f7151c72ff79ac (diff)
parent4166d9ab7b4ce374e2705f2f8ed22101d3d5f48c (diff)
downloadPrismLauncher-3781c64d413802e87fb9fe74d3d6ead6c4e04683.tar.gz
PrismLauncher-3781c64d413802e87fb9fe74d3d6ead6c4e04683.tar.bz2
PrismLauncher-3781c64d413802e87fb9fe74d3d6ead6c4e04683.zip
Merge pull request #810 from flowln/error_on_bad_file_paths_as_we_should_catquake
Diffstat (limited to 'launcher/minecraft')
-rw-r--r--launcher/minecraft/OneSixVersionFormat.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/launcher/minecraft/OneSixVersionFormat.cpp b/launcher/minecraft/OneSixVersionFormat.cpp
index 280f6b26..c2e33f4b 100644
--- a/launcher/minecraft/OneSixVersionFormat.cpp
+++ b/launcher/minecraft/OneSixVersionFormat.cpp
@@ -39,6 +39,8 @@
#include "minecraft/ParseUtils.h"
#include <minecraft/MojangVersionFormat.h>
+#include <QRegularExpression>
+
using namespace Json;
static void readString(const QJsonObject &root, const QString &key, QString &variable)
@@ -121,6 +123,15 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument &doc
out->uid = root.value("fileId").toString();
}
+ const QRegularExpression valid_uid_regex{ QRegularExpression::anchoredPattern(QStringLiteral(R"(\w+(?:\.\w+)*)")) };
+ if (!valid_uid_regex.match(out->uid).hasMatch()) {
+ qCritical() << "The component's 'uid' contains illegal characters! UID:" << out->uid;
+ out->addProblem(
+ ProblemSeverity::Error,
+ QObject::tr("The component's 'uid' contains illegal characters! This can cause security issues.")
+ );
+ }
+
out->version = root.value("version").toString();
MojangVersionFormat::readVersionProperties(root, out.get());