uaccess: disallow > INT_MAX copy sizes
As we've done with VFS, string operations, etc, reject usercopy sizes larger than INT_MAX, which would be nice to have for catching bugs related to size calculation overflows[1]. This adds 10 bytes to x86_64 defconfig text and 1980 bytes to the data section: text data bss dec hex filename 19691167 5134320 1646664 26472151 193eed7 vmlinux.before 19691177 5136300 1646664 26474141 193f69d vmlinux.after [1] https://marc.info/?l=linux-s390&m=156631939010493&w=2 Link: http://lkml.kernel.org/r/201908251612.F9902D7A@keescook Signed-off-by: Kees Cook <keescook@chromium.org> Suggested-by: Dan Carpenter <dan.carpenter@oracle.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5bf8bec3f4
commit
6d13de1489
|
@ -147,6 +147,8 @@ check_copy_size(const void *addr, size_t bytes, bool is_source)
|
||||||
__bad_copy_to();
|
__bad_copy_to();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (WARN_ON_ONCE(bytes > INT_MAX))
|
||||||
|
return false;
|
||||||
check_object_size(addr, bytes, is_source);
|
check_object_size(addr, bytes, is_source);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue