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)
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
if (zsb->z_use_sa && zp->z_is_sa) {
error = zpl_xattr_get_sa(ip, name, value, size);
- if (error >= 0)
+ if (error != -ENOENT)
goto out;
}
&zpl_xattr_acl_access_handler,
&zpl_xattr_acl_default_handler,
#endif /* HAVE_POSIX_ACLS */
+ NULL
};