From: Miklos Szeredi Date: Mon, 26 Jul 2004 19:38:45 +0000 (+0000) Subject: fix X-Git-Tag: fuse_1_9~20 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=94ed76ad4ae5c44a5b087b64f5dbf325f892f503;p=qemu-gpiodev%2Flibfuse.git fix --- diff --git a/ChangeLog b/ChangeLog index 01885b9..e64b898 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-07-26 Miklos Szeredi + + * Check permissions in setattr if 'default_permissions' flag is + set. Bug spotted by Damjan Lango + 2004-07-24 Miklos Szeredi * 'large_read' mount option removed for 2.6 kernels, since the diff --git a/README b/README index 90d9c4a..f00e303 100644 --- a/README +++ b/README @@ -20,22 +20,22 @@ and checking out the 'fuse' module. Installation ============ -See the file 'INSTALL' +./configure +make +make install -IMPORTANT NOTE: If you run a system with untrusted users, installing -this program is not recommended, as it could be used to breach -security (see the 'Security' section for explanation). +Also see the file 'INSTALL' How To Use ========== FUSE is made up of three main parts: - - A kernel filesystem module (kernel/fuse.o) + - A kernel filesystem module - - A userspace library (lib/libfuse.a) + - A userspace library - - A mount/unmount program (util/fusermount) + - A mount/unmount program Here's how to create your very own virtual filesystem in five easy @@ -45,20 +45,15 @@ steps (after installing FUSE): 2) Build the fusexmp program - 3) run 'example/fusexmp /mnt/whatever -d' + 3) run 'example/fusexmp /mnt/fuse -d' - 4) ls -al /mnt/whatever + 4) ls -al /mnt/fuse 5) Be glad If it doesn't work out, please ask! Also see the file 'include/fuse.h' for detailed documentation of the library interface. -The fusermount program accepts a couple of additional options (see -'fusermount -h'). You can add these options after a '--' like this: - - example/fusexmp /mnt/whatever -d -- -l - Security ======== diff --git a/kernel/dir.c b/kernel/dir.c index 7a8567c..87dec6a 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -762,6 +762,11 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr) int err; int is_truncate = 0; + if (fc->flags & FUSE_DEFAULT_PERMISSIONS) { + err = inode_change_ok(inode, attr); + if (err) + return err; + } if (attr->ia_valid & ATTR_SIZE) { unsigned long limit;