VirtualBox

Ticket #15137: Respect-umask-2-when-clearing-read-only-bit.patch

File Respect-umask-2-when-clearing-read-only-bit.patch, 1.5 KB (added by JackieKu, 9 years ago)

Proposed fix

  • src/VBox/Runtime/r3/fs.cpp

    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)  
    121121    return fMode;
    122122}
    123123
     124#ifndef RT_OS_WINDOWS
     125static mode_t rtFsGetUmask()
     126{
     127    mode_t mode = umask(0);
     128    umask(mode);
     129    return mode;
     130}
     131static const mode_t g_umask = rtFsGetUmask();
     132#else
     133static const int g_umask = 0;
     134#endif
    124135
    125136/**
    126137 * Normalizes the give mode mask.
    RTFMODE rtFsModeFromUnix(RTFMODE fMode, const char *pszName, size_t cbName)  
    137148RTFMODE rtFsModeNormalize(RTFMODE fMode, const char *pszName, size_t cbName)
    138149{
    139150    if (!(fMode & RTFS_UNIX_MASK))
    140         fMode = rtFsModeFromDos(fMode, pszName, cbName);
     151        fMode = rtFsModeFromDos(fMode, pszName, cbName) & ~g_umask;
    141152    else if (!(fMode & RTFS_DOS_MASK))
    142153        fMode = rtFsModeFromUnix(fMode, pszName, cbName);
    143154    else if (!(fMode & RTFS_TYPE_MASK))

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy