commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 61/64: Fix mode of nodes created with mkfile


From: Samuel Thibault
Subject: [hurd] 61/64: Fix mode of nodes created with mkfile
Date: Wed, 10 Dec 2014 15:17:08 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 7f68a98c5cad19350f53b00203465c72641b8f58
Author: Samuel Thibault <address@hidden>
Date:   Tue Dec 9 01:36:34 2014 +0100

    Fix mode of nodes created with mkfile
    
    Their faked field was not initialized.
    Thanks a lot to Svante Signell for the investigation
    
    * trans/fakeroot.c (new_node): Initialize faked field of nn to 0.
    (netfs_attempt_mkfile): Call set_default_attributes on newly-allocated node,
    and if the real mode is not the same as the requested mode, fake the mode.
---
 trans/fakeroot.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/trans/fakeroot.c b/trans/fakeroot.c
index 12173bd..2275981 100644
--- a/trans/fakeroot.c
+++ b/trans/fakeroot.c
@@ -103,6 +103,7 @@ new_node (file_t file, mach_port_t idport, int locked, int 
openmodes,
          return err;
        }
     }
+  nn->faked = 0;
 
   if (!locked)
     pthread_mutex_lock (&idport_ihash_lock);
@@ -679,13 +680,22 @@ netfs_attempt_mkfile (struct iouser *user, struct node 
*dir,
                      mode_t mode, struct node **np)
 {
   file_t newfile;
+  mode_t real_mode = real_from_fake_mode (mode);
   error_t err = dir_mkfile (netfs_node_netnode (dir)->file, O_RDWR|O_EXEC,
-                           real_from_fake_mode (mode), &newfile);
+                           real_mode, &newfile);
   pthread_mutex_unlock (&dir->lock);
   if (err == 0)
     err = new_node (newfile, MACH_PORT_NULL, 0, O_RDWR|O_EXEC, np);
   if (err == 0)
-    pthread_mutex_unlock (&(*np)->lock);
+    {
+      pthread_mutex_unlock (&(*np)->lock);
+      set_default_attributes (*np);
+      if (real_mode != mode)
+       {
+         set_faked_attribute (*np, FAKE_MODE);
+         (*np)->nn_stat.st_mode = mode;
+       }
+    }
   return err;
 }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]