Alexandre Julliard : server: Properly initialize mode and uid for file and directory objects.

Alexandre Julliard julliard at winehq.org
Mon Aug 17 11:24:47 CDT 2009


Module: wine
Branch: master
Commit: 74a63029c7ba4ea8079983a69dbbe681335a7d2d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=74a63029c7ba4ea8079983a69dbbe681335a7d2d

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Aug 17 17:18:54 2009 +0200

server: Properly initialize mode and uid for file and directory objects.

---

 server/change.c |    4 +++-
 server/file.c   |    3 ++-
 server/file.h   |    2 +-
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/server/change.c b/server/change.c
index 773fa1c..2b940fe 100644
--- a/server/change.c
+++ b/server/change.c
@@ -1108,7 +1108,7 @@ static int dir_add_to_existing_notify( struct dir *dir )
 
 #endif  /* USE_INOTIFY */
 
-struct object *create_dir_obj( struct fd *fd )
+struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode )
 {
     struct dir *dir;
 
@@ -1123,6 +1123,8 @@ struct object *create_dir_obj( struct fd *fd )
     dir->inode = NULL;
     grab_object( fd );
     dir->fd = fd;
+    dir->mode = mode;
+    dir->uid  = ~(uid_t)0;
     set_fd_user( fd, &dir_fd_ops, &dir->obj );
 
     dir_add_to_existing_notify( dir );
diff --git a/server/file.c b/server/file.c
index 98017b9..bbcd6f4 100644
--- a/server/file.c
+++ b/server/file.c
@@ -147,6 +147,7 @@ static struct object *create_file_obj( struct fd *fd, unsigned int access, mode_
     if (!file) return NULL;
     file->access  = access;
     file->mode    = mode;
+    file->uid     = ~(uid_t)0;
     file->fd      = fd;
     grab_object( fd );
     set_fd_user( fd, &file_fd_ops, &file->obj );
@@ -206,7 +207,7 @@ static struct object *create_file( const char *nameptr, data_size_t len, unsigne
     if (!fd) goto done;
 
     if (S_ISDIR(mode))
-        obj = create_dir_obj( fd );
+        obj = create_dir_obj( fd, access, mode );
     else if (S_ISCHR(mode) && is_serial_fd( fd ))
         obj = create_serial( fd );
     else
diff --git a/server/file.h b/server/file.h
index aef40f7..77de546 100644
--- a/server/file.h
+++ b/server/file.h
@@ -120,7 +120,7 @@ extern mode_t sd_to_mode( const struct security_descriptor *sd, const SID *owner
 
 extern void do_change_notify( int unix_fd );
 extern void sigio_callback(void);
-extern struct object *create_dir_obj( struct fd *fd );
+extern struct object *create_dir_obj( struct fd *fd, unsigned int access, mode_t mode );
 
 /* completion */
 




More information about the wine-cvs mailing list