Allow sdktool to run in an elevated context

This fixes an issue with installation on Mac: We run sdktool with
'elevated' rights if we e.g. install in a global directory, forcing
the effective user id to be 0. However, since Qt 5.3.0 QCoreApplication
aborts if geteuid() != getuid().

Change-Id: I678f405fc0cb31dbf9c0487f674bb8dbe5e2e95e
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Kai Koehne
2014-06-12 14:28:18 +02:00
parent 27cc89eb4a
commit 25f2239412

View File

@@ -159,6 +159,15 @@ int parseArguments(const QStringList &args, Settings *s, const QList<Operation *
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#if (QT_VERSION >= QT_VERSION_CHECK(5, 3, 0))
// Since 5.3, Qt by default aborts if the effective user id is different than the
// real user id. However, in IFW on Mac we use setuid to 'elevate'
// permissions if needed. This is considered safe because the user has to provide
// the credentials manually - an attack would require at least access to the
// user's environment.
QCoreApplication::setSetuidAllowed(true);
#endif
QCoreApplication a(argc, argv); QCoreApplication a(argc, argv);
Settings settings; Settings settings;