git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Correctly return ERANGE in getxattr(2)
[zfs.git]
/
module
/
zfs
/
zpl_xattr.c
diff --git
a/module/zfs/zpl_xattr.c
b/module/zfs/zpl_xattr.c
index
c03764f
..
a7e38e6
100644
(file)
--- a/
module/zfs/zpl_xattr.c
+++ b/
module/zfs/zpl_xattr.c
@@
-225,6
+225,11
@@
zpl_xattr_get_dir(struct inode *ip, const char *name, void *value,
goto out;
}
goto out;
}
+ if (size < i_size_read(xip)) {
+ error = -ERANGE;
+ goto out;
+ }
+
error = zpl_read_common(xip, value, size, 0, UIO_SYSSPACE, 0, cr);
out:
if (xip)
error = zpl_read_common(xip, value, size, 0, UIO_SYSSPACE, 0, cr);
out:
if (xip)
@@
-263,9
+268,12
@@
zpl_xattr_get_sa(struct inode *ip, const char *name, void *value, size_t size)
if (!size)
return (nv_size);
if (!size)
return (nv_size);
- memcpy(value, nv_value, MIN(size, nv_size));
+ if (size < nv_size)
+ return (-ERANGE);
+
+ memcpy(value, nv_value, nv_size);
- return (
MIN(size, nv_size)
);
+ return (
nv_size
);
}
static int
}
static int