From 2cf12a6baefaed1e1a3ec41a3bafa3865915daef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=81o=C5=9B?= Date: Tue, 5 Nov 2024 13:54:42 +0100 Subject: [PATCH] Fix directory permissions not set correctly on VxWorks In commit e275db9d885ccccc3def4d52c2dae2f8c062df1a, changes were made to handling directory creation in qfilesystem_unix.cpp. These changes missed VxWorks-specific case where its system `mkdir` function treats permissions of `000` as `default permissions`. This is causing failure of `tst_QDir::mkdirWithPermissions(0000)` test. To fix this, use `forceRequestedPermissionsOnVxWorks` function for VxWorks in `QFileSystemEngine::mkdir`. Fixes: QTBUG-130737 Task-number: QTBUG-115777 Change-Id: I16fc36448693050c7c92096d804a1caeb7e65115 Reviewed-by: Ahmad Samir Reviewed-by: Thiago Macieira --- src/corelib/io/qfilesystemengine_unix.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 81e36d43889..bd63a6d65ea 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -1193,7 +1193,12 @@ bool QFileSystemEngine::mkdir(const QFileSystemEntry &entry, Q_CHECK_FILE_NAME(path, false); mode_t mode = permissions ? QtPrivate::toMode_t(*permissions) : 0777; - return QT_MKDIR(removeTrailingSlashes(path), mode) == 0; + auto result = QT_MKDIR(removeTrailingSlashes(path), mode) == 0; +#if defined(Q_OS_VXWORKS) + if (result) + forceRequestedPermissionsOnVxWorks(path, mode); +#endif + return result; } bool QFileSystemEngine::rmdir(const QFileSystemEntry &entry)