From 168bc96f4f0809272c5ff628f1ab2b3b018f964b Mon Sep 17 00:00:00 2001
From: Kai-Chieh Ku <kjackie@gmail.com>
Date: Wed, 10 Feb 2016 14:51:55 +0800
Subject: [PATCH] Respect umask(2) when clearing read only bit.
The file permissions were not respect to umask(2)
when clearing read only bit from some
ShareFolders of Windows Guest.
The host file permissions would be 0666 in such cases.
---
src/VBox/Runtime/r3/fs.cpp | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/VBox/Runtime/r3/fs.cpp b/src/VBox/Runtime/r3/fs.cpp
index b5d6d2b..a016c14 100644
|
a
|
b
|
RTFMODE rtFsModeFromUnix(RTFMODE fMode, const char *pszName, size_t cbName)
|
| 121 | 121 | return fMode; |
| 122 | 122 | } |
| 123 | 123 | |
| | 124 | #ifndef RT_OS_WINDOWS |
| | 125 | static mode_t rtFsGetUmask() |
| | 126 | { |
| | 127 | mode_t mode = umask(0); |
| | 128 | umask(mode); |
| | 129 | return mode; |
| | 130 | } |
| | 131 | static const mode_t g_umask = rtFsGetUmask(); |
| | 132 | #else |
| | 133 | static const int g_umask = 0; |
| | 134 | #endif |
| 124 | 135 | |
| 125 | 136 | /** |
| 126 | 137 | * Normalizes the give mode mask. |
| … |
… |
RTFMODE rtFsModeFromUnix(RTFMODE fMode, const char *pszName, size_t cbName)
|
| 137 | 148 | RTFMODE rtFsModeNormalize(RTFMODE fMode, const char *pszName, size_t cbName) |
| 138 | 149 | { |
| 139 | 150 | if (!(fMode & RTFS_UNIX_MASK)) |
| 140 | | fMode = rtFsModeFromDos(fMode, pszName, cbName); |
| | 151 | fMode = rtFsModeFromDos(fMode, pszName, cbName) & ~g_umask; |
| 141 | 152 | else if (!(fMode & RTFS_DOS_MASK)) |
| 142 | 153 | fMode = rtFsModeFromUnix(fMode, pszName, cbName); |
| 143 | 154 | else if (!(fMode & RTFS_TYPE_MASK)) |