This is a note to let you know that I've just added the patch titled fuse: listxattr: verify xattr list to the 4.8-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: fuse-listxattr-verify-xattr-list.patch and it can be found in the queue-4.8 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From cb3ae6d25a5471be62bfe6ac1fccc0e91edeaba0 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi <mszeredi@xxxxxxxxxx> Date: Sat, 1 Oct 2016 07:32:32 +0200 Subject: fuse: listxattr: verify xattr list From: Miklos Szeredi <mszeredi@xxxxxxxxxx> commit cb3ae6d25a5471be62bfe6ac1fccc0e91edeaba0 upstream. Make sure userspace filesystem is returning a well formed list of xattr names (zero or more nonzero length, null terminated strings). [Michael Theall: only verify in the nonzero size case] Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- fs/fuse/dir.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1801,6 +1801,23 @@ static ssize_t fuse_getxattr(struct dent return ret; } +static int fuse_verify_xattr_list(char *list, size_t size) +{ + size_t origsize = size; + + while (size) { + size_t thislen = strnlen(list, size); + + if (!thislen || thislen == size) + return -EIO; + + size -= thislen + 1; + list += thislen + 1; + } + + return origsize; +} + static ssize_t fuse_listxattr(struct dentry *entry, char *list, size_t size) { struct inode *inode = d_inode(entry); @@ -1836,6 +1853,8 @@ static ssize_t fuse_listxattr(struct den ret = fuse_simple_request(fc, &args); if (!ret && !size) ret = outarg.size; + if (ret > 0 && size) + ret = fuse_verify_xattr_list(list, ret); if (ret == -ENOSYS) { fc->no_listxattr = 1; ret = -EOPNOTSUPP; Patches currently in stable-queue which might be from mszeredi@xxxxxxxxxx are queue-4.8/fuse-listxattr-verify-xattr-list.patch queue-4.8/fuse-invalidate-dir-dentry-after-chmod.patch queue-4.8/fuse-fix-killing-sid-in-setattr.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html