Alexandre Julliard : server: Properly initialize mode and uid for file and directory objects.
Module: wine Branch: master Commit: 74a63029c7ba4ea8079983a69dbbe681335a7d2d URL: http://source.winehq.org/git/wine.git/?a=commit;h=74a63029c7ba4ea8079983a69d... Author: Alexandre Julliard <julliard(a)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 */
participants (1)
-
Alexandre Julliard