Группа :: Игры/Приключения
Пакет: instead-launcher
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: instead-launcher-dropgid.patch
Скачать
Скачать
п╒п╬п╩я▄п╨п╬ п╡ instead-launcher-0.6.3.new: instead-launcher.desktop
п╒п╬п╩я▄п╨п╬ п╡ instead-launcher-0.6.3.new: instead-launcher_ru.qm
diff -ur instead-launcher-0.6.3/mainwindow.cpp instead-launcher-0.6.3.new/mainwindow.cpp
--- instead-launcher-0.6.3/mainwindow.cpp 2015-04-21 13:41:28.000000000 +0000
+++ instead-launcher-0.6.3.new/mainwindow.cpp 2015-04-21 14:08:50.372400221 +0000
@@ -8,6 +8,8 @@
#include "global.h"
#include "urlresolver.h"
#include "aboutwidget.h"
+#include <unistd.h>
+#include <sys/types.h>
class NetGameItem: public QTreeWidgetItem {
public:
@@ -275,12 +277,15 @@
void MainWindow::playSelectedGame()
{
+ gid_t egid;
if (!m_ui->listGames->currentItem()) return;
LocalGameItem *item = static_cast<LocalGameItem *>(m_ui->listGames->currentItem());
QString gameName = item->info().name();
QString insteadPath = m_ui->lineInsteadPath->text();
QString gamesPath = m_ui->gamesDir->text();
if (gamesPath.right(1) != QDir::separator()) gamesPath += QDir::separator();
+ egid = getegid();
+ setegid(getgid());
m_process = new QProcess();
QStringList arguments;
@@ -303,6 +308,7 @@
connect( m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT( processFinished(int, QProcess::ExitStatus)) );
m_process->start(insteadPath, arguments); // may startDetached be better? :)
+ setegid(egid);
}
diff -ur instead-launcher-0.6.3/updatewidget.cpp instead-launcher-0.6.3.new/updatewidget.cpp
--- instead-launcher-0.6.3/updatewidget.cpp 2015-04-21 13:41:28.000000000 +0000
+++ instead-launcher-0.6.3.new/updatewidget.cpp 2015-04-21 14:08:27.076897636 +0000
@@ -2,6 +2,8 @@
#include "urlresolver.h"
#include "config.h"
#include "global.h"
+#include <unistd.h>
+#include <sys/types.h>
// -1 ver1 < ver2
// 0 ver1 == ver2
@@ -204,6 +206,7 @@
}
QString UpdateWidget::detectInsteadVersion( QString insteadBinary ) {
+ gid_t egid;
QString version = "0";
QDir tempDir = QDir::temp();
tempDir.remove("instead-version/main.lua");
@@ -231,11 +234,14 @@
arguments << "-nostdgames";
arguments << "-gamespath" << QDir::toNativeSeparators(tempDir.absolutePath());
QFileInfo info(insteadBinary);
+ egid = getegid();
+ setegid(getgid());
QProcess process(this);
process.setWorkingDirectory( info.path() );
qDebug() << "launch " << insteadBinary << " with args " << arguments;
// execute doesn't work for windows instead version, sorry :(
process.start( insteadBinary, arguments );
+ setegid(egid);
process.waitForFinished(20000);
qDebug() << "instead finished with exit code " << process.exitCode();
if (process.exitCode() != 123) {