]> git.ipfire.org Git - thirdparty/qemu.git/commit
hw/misc/aspeed_hace: Fix buffer overflow in has_padding function
authorJamin Lin <jamin_lin@aspeedtech.com>
Fri, 21 Mar 2025 09:25:58 +0000 (17:25 +0800)
committerMichael Tokarev <mjt@tls.msk.ru>
Mon, 24 Mar 2025 20:50:03 +0000 (23:50 +0300)
commit88f98ad83a4f2a174791579485ec133b7598d039
tree08c2a7fa53ab1eefa6b0bb596be2788b92cfa271
parenta7f1eb5e2723868b3f79b543f42d72f353497522
hw/misc/aspeed_hace: Fix buffer overflow in has_padding function

The maximum padding size is either 64 or 128 bytes and should always be smaller
than "req_len". If "padding_size" exceeds "req_len", then
"req_len - padding_size" underflows due to "uint32_t" data type, leading to a
large incorrect value (e.g., `0xFFXXXXXX`). This causes an out-of-bounds memory
access, potentially leading to a buffer overflow.

Added a check to ensure "padding_size" does not exceed "req_len" before
computing "pad_offset". This prevents "req_len - padding_size" from underflowing
and avoids accessing invalid memory.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Fixes: 5cd7d8564a8b563da724b9e6264c967f0a091afa ("aspeed/hace: Support AST2600 HACE ")
Link: https://lore.kernel.org/qemu-devel/20250321092623.2097234-3-jamin_lin@aspeedtech.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
(cherry picked from commit 78877b2e06464f49f777e086845e094ea7bc82ef)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/misc/aspeed_hace.c