staging: lustre: check for integer overflow
In ll_ioctl_fiemap(), a user-supplied value is used to calculate a length of a buffer which is later allocated with user data. Signed-off-by: Vitaly Osipov <vitaly.osipov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
37aa48368f
commit
7bc3dfa37b
@ -1829,6 +1829,10 @@ static int ll_ioctl_fiemap(struct inode *inode, unsigned long arg)
|
|||||||
if (get_user(extent_count,
|
if (get_user(extent_count,
|
||||||
&((struct ll_user_fiemap __user *)arg)->fm_extent_count))
|
&((struct ll_user_fiemap __user *)arg)->fm_extent_count))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
|
if (extent_count >=
|
||||||
|
(SIZE_MAX - sizeof(*fiemap_s)) / sizeof(struct ll_fiemap_extent))
|
||||||
|
return -EINVAL;
|
||||||
num_bytes = sizeof(*fiemap_s) + (extent_count *
|
num_bytes = sizeof(*fiemap_s) + (extent_count *
|
||||||
sizeof(struct ll_fiemap_extent));
|
sizeof(struct ll_fiemap_extent));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user