From 08a39ecf332e96444ce6b2fb0502c569935fad6a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Jun 2017 10:38:13 -0700 Subject: QFileSystemEngine/Unix: use fchmod(2) if the file is open This protects against the file having been renamed or deleted. We'll still operate on the open file, regardless the name it may have on the filesystem. Change-Id: I1eba2b016de74620bfc8fffd14cca85cfd672e6d Reviewed-by: Lars Knoll --- src/corelib/io/qfsfileengine_unix.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/corelib/io/qfsfileengine_unix.cpp') diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp index e152b035e2..3f4f593d81 100644 --- a/src/corelib/io/qfsfileengine_unix.cpp +++ b/src/corelib/io/qfsfileengine_unix.cpp @@ -654,7 +654,12 @@ bool QFSFileEngine::setPermissions(uint perms) { Q_D(QFSFileEngine); QSystemError error; - if (!QFileSystemEngine::setPermissions(d->fileEntry, QFile::Permissions(perms), error, 0)) { + bool ok; + if (d->fd != -1) + ok = QFileSystemEngine::setPermissions(d->fd, QFile::Permissions(perms), error, 0); + else + ok = QFileSystemEngine::setPermissions(d->fileEntry, QFile::Permissions(perms), error, 0); + if (!ok) { setError(QFile::PermissionsError, error.toString()); return false; } -- cgit v1.2.3