[Xfce4-commits] <thunar:xfce-4.6> Fix bugs #3532 (umask < 0022 not honoured) and #5813 properly (I hope).

Jannis Pohlmann noreply at xfce.org
Sat Oct 3 12:00:01 CEST 2009


Updating branch refs/heads/xfce-4.6
         to eb58c6a6ba7f77c2c16016db064524df598ef421 (commit)
       from 622ebb3ac3867e54c402f46ad88f1beaed163721 (commit)

commit eb58c6a6ba7f77c2c16016db064524df598ef421
Author: Jannis Pohlmann <jannis at xfce.org>
Date:   Sat Oct 3 11:49:41 2009 +0200

    Fix bugs #3532 (umask < 0022 not honoured) and #5813 properly (I hope).
    
    The previous patch applied in e53de71e6add9b28ba034111a1d19db7def8f7e7
    made things worse than before: it used DEFFILEMODE which seems to be
    BSD-specific for creating files. It also reset the umask to 0 when
    creating the first directory with _thunar_vfs_io_jobs_mkdir().
    
    What we really want is to use 0777 (dirs) and 0666 (files) and let the
    standard C system calls like open() apply the umask value. This should
    work on all POSIX-compliant systems.
    
    Patch provided by Craig Ringer <craig at postnewspapers.com.au>.

 thunar-vfs/thunar-vfs-io-jobs.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/thunar-vfs/thunar-vfs-io-jobs.c b/thunar-vfs/thunar-vfs-io-jobs.c
index 8d70812..c94523a 100644
--- a/thunar-vfs/thunar-vfs-io-jobs.c
+++ b/thunar-vfs/thunar-vfs-io-jobs.c
@@ -432,8 +432,12 @@ _thunar_vfs_io_jobs_create (ThunarVfsJob *job,
       absolute_path = thunar_vfs_path_dup_string (lp->data);
 
 again:
-      /* try to create the file at the given path */
-      fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, DEFFILEMODE);
+      /* Try to create the file at the given path.
+       *
+       * Note that despite the 0666 mask, we won't really create a world-writable
+       * file unless the user's umask permits it (ie the umask is 0000).
+       */
+      fd = g_open (absolute_path, O_CREAT | O_EXCL | O_WRONLY, 0666);
       if (G_UNLIKELY (fd < 0))
         {
           /* check if the file already exists */
@@ -707,8 +711,13 @@ _thunar_vfs_io_jobs_mkdir (ThunarVfsJob *job,
       /* update the progress information */
       _thunar_vfs_job_process_path (job, lp);
 
-      /* try to create the target directory */
-      if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777 & ~umask(0), THUNAR_VFS_IO_OPS_NONE, error))
+      /* try to create the target directory
+       *
+       * Note that the mode specified here is limited by the user's umask, so we will not
+       * actually be creating a world writable directory unless the user's umask permits
+       * it.
+       */
+      if (!_thunar_vfs_io_ops_mkdir (lp->data, 0777, THUNAR_VFS_IO_OPS_NONE, error))
         return FALSE;
     }
 



More information about the Xfce4-commits mailing list