Module: wine Branch: master Commit: 74a63029c7ba4ea8079983a69dbbe681335a7d2d URL: http://source.winehq.org/git/wine.git/?a=commit;h=74a63029c7ba4ea8079983a69d...
Author: Alexandre Julliard julliard@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 */