QTemporaryDir: Set directory permissions at the time of creation

Use new QDir::mkdir() method to set directory permissions at the time
of its creation on systems that support this feature. This removes the
time window when the created directory is potentially accessible to
everybody.

Task-number: QTBUG-79750
Change-Id: I82afee7f0708bfdcc9b3b3978af9a2aef1b8672d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Ievgenii Meshcheriakov 2021-10-21 14:18:27 +02:00
parent 174af05400
commit b9be035c62

View File

@ -101,17 +101,9 @@ void QTemporaryDirPrivate::create(const QString &templateName)
for (int i = 0; i < 256; ++i) {
tfn.generateNext();
QFileSystemEntry fileSystemEntry(tfn.path, QFileSystemEntry::FromNativePath());
if (QFileSystemEngine::createDirectory(fileSystemEntry, false)) {
QSystemError error;
QFileSystemEngine::setPermissions(fileSystemEntry,
QFile::ReadOwner |
QFile::WriteOwner |
QFile::ExeOwner, error);
if (error.error() != 0) {
if (!QFileSystemEngine::removeDirectory(fileSystemEntry, false))
qWarning() << "Unable to remove unused directory" << templateName;
continue;
}
if (QFileSystemEngine::createDirectory(fileSystemEntry, false,
QFile::ReadOwner | QFile::WriteOwner
| QFile::ExeOwner)) {
success = true;
pathOrError = fileSystemEntry.filePath();
return;