Message ID | 20190614134625.6870-4-jlayton@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ceph: don't NULL terminate virtual xattr values | expand |
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index a1cd9613be98..e3246c27f2da 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -805,8 +805,11 @@ ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value, if (err) return err; err = -ENODATA; - if (!(vxattr->exists_cb && !vxattr->exists_cb(ci))) + if (!(vxattr->exists_cb && !vxattr->exists_cb(ci))) { err = vxattr->getxattr_cb(ci, value, size); + if (size && size < err) + err = -ERANGE; + } return err; }
The getxattr manpage states that we should return ERANGE if the destination buffer size is too small to hold the value. Signed-off-by: Jeff Layton <jlayton@kernel.org> --- fs/ceph/xattr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)