vfs: Check attribute names in posix acl xattr handers
authorAndreas Gruenbacher <agruenba@redhat.com>
Tue, 3 Nov 2015 14:25:07 +0000 (15:25 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 14 Nov 2015 01:34:28 +0000 (20:34 -0500)
The get and set operations of the POSIX ACL xattr handlers failed to check
the attribute names, so all names with "system.posix_acl_access" or
"system.posix_acl_default" as a prefix were accepted.  Reject invalid names
from now on.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/posix_acl.c

index 4fb17ded7d4780d8d19e7c68cb1c7cedfeb79cf7..b1a66e844d355a6f7615b3e2e8b97765b072e2a5 100644 (file)
@@ -768,6 +768,8 @@ posix_acl_xattr_get(struct dentry *dentry, const char *name,
        struct posix_acl *acl;
        int error;
 
+       if (strcmp(name, "") != 0)
+               return -EINVAL;
        if (!IS_POSIXACL(d_backing_inode(dentry)))
                return -EOPNOTSUPP;
        if (d_is_symlink(dentry))
@@ -793,6 +795,8 @@ posix_acl_xattr_set(struct dentry *dentry, const char *name,
        struct posix_acl *acl = NULL;
        int ret;
 
+       if (strcmp(name, "") != 0)
+               return -EINVAL;
        if (!IS_POSIXACL(inode))
                return -EOPNOTSUPP;
        if (!inode->i_op->set_acl)