]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
batman-adv: tvlv: reject oversized TVLV packets
authorSven Eckelmann <sven@narfation.org>
Sat, 9 May 2026 19:55:29 +0000 (21:55 +0200)
committerSven Eckelmann <sven@narfation.org>
Tue, 19 May 2026 06:16:58 +0000 (08:16 +0200)
commitf50487e3566358b2b982b7801945e858c78ad9ab
tree415f3800d0f50079dc9f37cd5bb9dd5f88b07494
parent501368506563e151b322c8c3f228b796e615b90d
batman-adv: tvlv: reject oversized TVLV packets

batadv_tvlv_container_ogm_append() builds a TVLV packet section from
the tvlv.container_list. The total size of this section is computed by
batadv_tvlv_container_list_size(), which sums the sizes of all registered
containers.

The return type and accumulator in batadv_tvlv_container_list_size() were
u16. If the accumulated size exceeds U16_MAX, the value wraps around,
causing the subsequent allocation in batadv_tvlv_container_ogm_append()
to be undersized. The memcpy-style copy that follows would then write
beyond the end of the allocated buffer, corrupting kernel memory.

Fix this by widening the return type of batadv_tvlv_container_list_size()
to size_t. In batadv_tvlv_container_ogm_append(), check the computed length
against U16_MAX before proceeding, and bail out as if the allocation had
failed when the limit is exceeded.

Cc: stable@kernel.org
Fixes: ef26157747d4 ("batman-adv: tvlv - basic infrastructure")
Reported-by: Yuan Tan <yuantan098@gmail.com>
Reported-by: Yifan Wu <yifanwucs@gmail.com>
Reported-by: Juefei Pu <tomapufckgml@gmail.com>
Reported-by: Xin Liu <bird@lzu.edu.cn>
Reviewed-by: Yuan Tan <yuantan098@gmail.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
net/batman-adv/tvlv.c