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