Browse Source

Fix reading of setxattr name

pull/1106/head
Antonio SJ Musumeci 2 years ago
parent
commit
d14427ad9e
  1. 1
      libfuse/include/fuse_common.h
  2. 6
      libfuse/lib/fuse.c
  3. 4
      libfuse/lib/fuse_lowlevel.c

1
libfuse/include/fuse_common.h

@ -126,6 +126,7 @@ struct fuse_file_info_t
#define FUSE_CAP_POSIX_ACL (1 << 19)
#define FUSE_CAP_CACHE_SYMLINKS (1 << 20)
#define FUSE_CAP_MAX_PAGES (1 << 21)
#define FUSE_CAP_SETXATTR_EXT (1 << 22)
/**
* Ioctl flags

6
libfuse/lib/fuse.c

@ -2788,7 +2788,11 @@ fuse_lib_setxattr(fuse_req_t req,
struct fuse_setxattr_in *arg;
arg = fuse_hdr_arg(hdr_);
name = PARAM(arg);
if((req->f->conn.capable & FUSE_SETXATTR_EXT) && (req->f->conn.want & FUSE_SETXATTR_EXT))
name = PARAM(arg);
else
name = (((char*)arg) + FUSE_COMPAT_SETXATTR_IN_SIZE);
value = (name + strlen(name) + 1);
f = req_fuse_prepare(req);

4
libfuse/lib/fuse_lowlevel.c

@ -1432,6 +1432,8 @@ do_init(fuse_req_t req,
f->conn.capable |= FUSE_CAP_READDIR_PLUS;
if (arg->flags & FUSE_READDIRPLUS_AUTO)
f->conn.capable |= FUSE_CAP_READDIR_PLUS_AUTO;
if (arg->flags & FUSE_SETXATTR_EXT)
f->conn.capable |= FUSE_CAP_SETXATTR_EXT;
}
else
{
@ -1519,6 +1521,8 @@ do_init(fuse_req_t req,
outarg.flags |= FUSE_DO_READDIRPLUS;
if (f->conn.want & FUSE_CAP_READDIR_PLUS_AUTO)
outarg.flags |= FUSE_READDIRPLUS_AUTO;
if (f->conn.want & FUSE_CAP_SETXATTR_EXT)
outarg.flags |= FUSE_SETXATTR_EXT;
outarg.max_readahead = f->conn.max_readahead;
outarg.max_write = f->conn.max_write;

Loading…
Cancel
Save