From 6afff3e31fa7d4651a332a23b5a5ca733db29f07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 6 Apr 2022 22:45:57 +0200 Subject: [PATCH] NOISSUE prevent -version being passed to the JRE We want specific JREs, always, not something that is magically resolved. This counteracts some really bad advice recently being spread on reddit. --- launcher/JavaCommon.cpp | 11 +++++++++++ launcher/LaunchController.cpp | 5 ++++- launcher/ui/pages/instance/InstanceSettingsPage.cpp | 1 - 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/launcher/JavaCommon.cpp b/launcher/JavaCommon.cpp index 6fa5851b..94035912 100644 --- a/launcher/JavaCommon.cpp +++ b/launcher/JavaCommon.cpp @@ -17,6 +17,17 @@ bool JavaCommon::checkJVMArgs(QString jvmargs, QWidget *parent) QMessageBox::Warning)->exec(); return false; } + // block lunacy with passing required version to the JVM + if (jvmargs.contains(QRegExp("-version:.*"))) { + auto warnStr = QObject::tr( + "You tried to pass required java version argument to the JVM (using \"-version=xxx\"). This is not safe and will not be allowed.\n" + "This message will be displayed until you remove this from the JVM arguments."); + CustomMessageBox::selectable( + parent, QObject::tr("JVM arguments warning"), + warnStr, + QMessageBox::Warning)->exec(); + return false; + } return true; } diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index 17e79545..03a68a10 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -36,7 +36,10 @@ void LaunchController::executeTask() return; } - JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget); + if(!JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget)) { + emitFailed(tr("Invalid Java arguments specified. Please fix this first.")); + return; + } login(); } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index b0e18af4..397504fc 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -141,7 +141,6 @@ void InstanceSettingsPage::applySettings() if(javaArgs) { m_settings->set("JvmArgs", ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); - JavaCommon::checkJVMArgs(m_settings->get("JvmArgs").toString(), this->parentWidget()); } else {