diff options
| -rw-r--r-- | launcher/minecraft/OneSixVersionFormat.cpp | 11 | 
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()); | 
