Warning, /libraries/xdg-portal-test-kde/flatpak-build/patch/qtbase-revert-qstandardpaths-dont-change-permissions-on-xdg-runtime-dir.patch is written in an unsupported language. File is not indexed.
0001 From 689f77c63a4e9480ce2c8576fdbeb11ab30d206c Mon Sep 17 00:00:00 2001 0002 From: Jan Grulich <jgrulich@redhat.com> 0003 Date: Thu, 15 Apr 2021 09:09:10 +0200 0004 Subject: Revert "QStandardPaths: Don't change permissions of XDG_RUNTIME_DIR" 0005 0006 This reverts commit 0fbb484d4aeb4eff50eb4aa312ab8ff41ce4e082. 0007 0008 diff --git a/src/corelib/io/qstandardpaths_unix.cpp b/src/corelib/io/qstandardpaths_unix.cpp 0009 index 4ebeefcedb..2e779bef66 100644 0010 --- a/src/corelib/io/qstandardpaths_unix.cpp 0011 +++ b/src/corelib/io/qstandardpaths_unix.cpp 0012 @@ -94,30 +94,6 @@ static QLatin1String xdg_key_name(QStandardPaths::StandardLocation type) 0013 } 0014 #endif 0015 0016 -static QByteArray unixPermissionsText(QFile::Permissions permissions) 0017 -{ 0018 - mode_t perms = 0; 0019 - if (permissions & QFile::ReadOwner) 0020 - perms |= S_IRUSR; 0021 - if (permissions & QFile::WriteOwner) 0022 - perms |= S_IWUSR; 0023 - if (permissions & QFile::ExeOwner) 0024 - perms |= S_IXUSR; 0025 - if (permissions & QFile::ReadGroup) 0026 - perms |= S_IRGRP; 0027 - if (permissions & QFile::WriteGroup) 0028 - perms |= S_IWGRP; 0029 - if (permissions & QFile::ExeGroup) 0030 - perms |= S_IXGRP; 0031 - if (permissions & QFile::ReadOther) 0032 - perms |= S_IROTH; 0033 - if (permissions & QFile::WriteOther) 0034 - perms |= S_IWOTH; 0035 - if (permissions & QFile::ExeOther) 0036 - perms |= S_IXOTH; 0037 - return '0' + QByteArray::number(perms, 8); 0038 -} 0039 - 0040 static bool checkXdgRuntimeDir(const QString &xdgRuntimeDir) 0041 { 0042 auto describeMetaData = [](const QFileSystemMetaData &metaData) -> QByteArray { 0043 @@ -137,7 +113,27 @@ static bool checkXdgRuntimeDir(const QString &xdgRuntimeDir) 0044 else 0045 description += "a block device"; 0046 0047 - description += " permissions " + unixPermissionsText(metaData.permissions()); 0048 + // convert QFileSystemMetaData permissions back to Unix 0049 + mode_t perms = 0; 0050 + if (metaData.permissions() & QFile::ReadOwner) 0051 + perms |= S_IRUSR; 0052 + if (metaData.permissions() & QFile::WriteOwner) 0053 + perms |= S_IWUSR; 0054 + if (metaData.permissions() & QFile::ExeOwner) 0055 + perms |= S_IXUSR; 0056 + if (metaData.permissions() & QFile::ReadGroup) 0057 + perms |= S_IRGRP; 0058 + if (metaData.permissions() & QFile::WriteGroup) 0059 + perms |= S_IWGRP; 0060 + if (metaData.permissions() & QFile::ExeGroup) 0061 + perms |= S_IXGRP; 0062 + if (metaData.permissions() & QFile::ReadOther) 0063 + perms |= S_IROTH; 0064 + if (metaData.permissions() & QFile::WriteOther) 0065 + perms |= S_IWOTH; 0066 + if (metaData.permissions() & QFile::ExeOther) 0067 + perms |= S_IXOTH; 0068 + description += " permissions 0" + QByteArray::number(perms, 8); 0069 0070 return description 0071 + " owned by UID " + QByteArray::number(metaData.userId()) 0072 @@ -190,11 +186,14 @@ static bool checkXdgRuntimeDir(const QString &xdgRuntimeDir) 0073 0074 // "and he MUST be the only one having read and write access to it. Its Unix access mode MUST be 0700." 0075 if (metaData.permissions() != wantedPerms) { 0076 - qWarning("QStandardPaths: wrong permissions on runtime directory %ls, %s instead of %s", 0077 - qUtf16Printable(xdgRuntimeDir), 0078 - unixPermissionsText(metaData.permissions()).constData(), 0079 - unixPermissionsText(wantedPerms).constData()); 0080 - return false; 0081 + // attempt to correct: 0082 + QSystemError error; 0083 + if (!QFileSystemEngine::setPermissions(entry, wantedPerms, error)) { 0084 + qErrnoWarning("QStandardPaths: could not set correct permissions on runtime directory " 0085 + "'%ls', which is %s", qUtf16Printable(xdgRuntimeDir), 0086 + describeMetaData(metaData).constData()); 0087 + return false; 0088 + } 0089 } 0090 0091 return true; 0092 diff --git a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp 0093 index a0aefac268..afbd64c405 100644 0094 --- a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp 0095 +++ b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp 0096 @@ -532,12 +532,7 @@ void tst_qstandardpaths::testCustomRuntimeDirectory_data() 0097 d.mkdir("runtime"); 0098 QFile::setPermissions(p, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | 0099 QFile::ExeGroup | QFile::ExeOther); 0100 - updateRuntimeDir(p); 0101 - QTest::ignoreMessage(QtWarningMsg, 0102 - QString("QStandardPaths: wrong permissions on runtime directory %1, " 0103 - "0711 instead of 0700") 0104 - .arg(p).toLatin1()); 0105 - return fallbackXdgRuntimeDir(); 0106 + return updateRuntimeDir(p); 0107 }); 0108 0109 addRow("environment:wrong-owner", [](QDir &) { 0110 @@ -602,7 +597,6 @@ void tst_qstandardpaths::testCustomRuntimeDirectory_data() 0111 clearRuntimeDir(); 0112 QString p = fallbackXdgRuntimeDir(); 0113 d.mkdir(p); // probably has wrong permissions 0114 - QFile::setPermissions(p, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); 0115 return p; 0116 }); 0117