Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

SUNRPC: clean up integer overflow check

This integer overflow check works as intended but Clang and GCC and warn
about it when compiling with W=1.

include/linux/sunrpc/xdr.h:539:17: error: comparison is always false
due to limited range of data type [-Werror=type-limits]

Use size_mul() to prevent the integer overflow. It silences the warning
and it's cleaner as well.

Reported-by: Dmitry Antipov <dmantipov@yandex.ru>
Closes: https://lore.kernel.org/all/20230601143332.255312-1-dmantipov@yandex.ru/
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Acked-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>

authored by

Dan Carpenter and committed by
Anna Schumaker
e87cf8a2 f9597ba8

+1 -3
+1 -3
include/linux/sunrpc/xdr.h
··· 777 777 778 778 if (unlikely(xdr_stream_decode_u32(xdr, &len) < 0)) 779 779 return -EBADMSG; 780 - if (len > SIZE_MAX / sizeof(*p)) 781 - return -EBADMSG; 782 - p = xdr_inline_decode(xdr, len * sizeof(*p)); 780 + p = xdr_inline_decode(xdr, size_mul(len, sizeof(*p))); 783 781 if (unlikely(!p)) 784 782 return -EBADMSG; 785 783 if (array == NULL)