]> www.infradead.org Git - users/dwmw2/linux.git/commit
binfmt_flat: Fix integer overflow bug on 32 bit systems
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 4 Dec 2024 12:07:15 +0000 (15:07 +0300)
committerKees Cook <kees@kernel.org>
Fri, 10 Jan 2025 16:49:05 +0000 (08:49 -0800)
commit55cf2f4b945f6a6416cc2524ba740b83cc9af25a
treec2765ada6cad62a82939aa663996df6a83ae507a
parent184a9358e506b77ade22c07dda4f34d133bc31c0
binfmt_flat: Fix integer overflow bug on 32 bit systems

Most of these sizes and counts are capped at 256MB so the math doesn't
result in an integer overflow.  The "relocs" count needs to be checked
as well.  Otherwise on 32bit systems the calculation of "full_data"
could be wrong.

full_data = data_len + relocs * sizeof(unsigned long);

Fixes: c995ee28d29d ("binfmt_flat: prevent kernel dammage from corrupted executable headers")
Cc: stable@vger.kernel.org
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Acked-by: Nicolas Pitre <npitre@baylibre.com>
Link: https://lore.kernel.org/r/5be17f6c-5338-43be-91ef-650153b975cb@stanley.mountain
Signed-off-by: Kees Cook <kees@kernel.org>
fs/binfmt_flat.c