Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 971df15b authored by Andreas Gruenbacher's avatar Andreas Gruenbacher Committed by Al Viro
Browse files

sockfs: getxattr: Fail with -EOPNOTSUPP for invalid attribute names



The standard return value for unsupported attribute names is
-EOPNOTSUPP, as opposed to undefined but supported attributes
(-ENODATA).

Also, fail for attribute names like "system.sockprotonameXXX" and
simplify the code a bit.

Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e72a1a8b
Loading
Loading
Loading
Loading
+6 −18
Original line number Diff line number Diff line
@@ -469,27 +469,15 @@ static struct socket *sockfd_lookup_light(int fd, int *err, int *fput_needed)
static ssize_t sockfs_getxattr(struct dentry *dentry, struct inode *inode,
			       const char *name, void *value, size_t size)
{
	const char *proto_name;
	size_t proto_size;
	int error;

	error = -ENODATA;
	if (!strncmp(name, XATTR_NAME_SOCKPROTONAME, XATTR_NAME_SOCKPROTONAME_LEN)) {
		proto_name = dentry->d_name.name;
		proto_size = strlen(proto_name);

	if (!strcmp(name, XATTR_NAME_SOCKPROTONAME)) {
		if (value) {
			error = -ERANGE;
			if (proto_size + 1 > size)
				goto out;

			strncpy(value, proto_name, proto_size + 1);
			if (dentry->d_name.len + 1 > size)
				return -ERANGE;
			memcpy(value, dentry->d_name.name, dentry->d_name.len + 1);
		}
		error = proto_size + 1;
		return dentry->d_name.len + 1;
	}

out:
	return error;
	return -EOPNOTSUPP;
}

static ssize_t sockfs_listxattr(struct dentry *dentry, char *buffer,