Skip to content

Commit

Permalink
Merge pull request PrismLauncher#1882 from bit69tream/notify-user-if-…
Browse files Browse the repository at this point in the history
…tmp-is-noexec
  • Loading branch information
Scrumplex authored Nov 28, 2023
2 parents 5291268 + d414599 commit 4c59a1b
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions launcher/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,15 @@
#include "gamemode_client.h"
#endif

#if defined(Q_OS_LINUX)
#include <sys/statvfs.h>
#endif

#if defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)
#include <sys/mount.h>
#include <sys/types.h>
#endif

#if defined(Q_OS_MAC)
#if defined(SPARKLE_ENABLED)
#include "updater/MacSparkleUpdater.h"
Expand Down Expand Up @@ -988,6 +997,37 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
}
}

// notify user if /tmp is mounted with `noexec` (#1693)
{
bool is_tmp_noexec = false;

#if defined(Q_OS_LINUX)

struct statvfs tmp_stat;
statvfs("/tmp", &tmp_stat);
is_tmp_noexec = tmp_stat.f_flag & ST_NOEXEC;

#elif defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD)

struct statfs tmp_stat;
statfs("/tmp", &tmp_stat);
is_tmp_noexec = tmp_stat.f_flags & MNT_NOEXEC;

#endif

if (is_tmp_noexec) {
auto infoMsg =
tr("Your /tmp directory is currently mounted with the 'noexec' flag enabled.\n"
"Some versions of Minecraft may not launch.\n");
auto msgBox = new QMessageBox(QMessageBox::Information, tr("Incompatible system configuration"), infoMsg, QMessageBox::Ok);
msgBox->setDefaultButton(QMessageBox::Ok);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setMinimumWidth(460);
msgBox->adjustSize();
msgBox->open();
}
}

if (createSetupWizard()) {
return;
}
Expand Down

0 comments on commit 4c59a1b

Please sign in to comment.