linux/net/caif
Junrui Luo 4ec29714aa caif: fix integer underflow in cffrml_receive()
[ Upstream commit 8a11ff0948 ]

The cffrml_receive() function extracts a length field from the packet
header and, when FCS is disabled, subtracts 2 from this length without
validating that len >= 2.

If an attacker sends a malicious packet with a length field of 0 or 1
to an interface with FCS disabled, the subtraction causes an integer
underflow.

This can lead to memory exhaustion and kernel instability, potential
information disclosure if padding contains uninitialized kernel memory.

Fix this by validating that len >= 2 before performing the subtraction.

Reported-by: Yuhao Jiang <danisjiang@gmail.com>
Reported-by: Junrui Luo <moonafterrain@outlook.com>
Fixes: b482cd2053 ("net-caif: add CAIF core protocol stack")
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/SYBPR01MB7881511122BAFEA8212A1608AFA6A@SYBPR01MB7881.ausprd01.prod.outlook.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-01-08 10:14:01 +01:00
..
caif_dev.c net: fill in MODULE_DESCRIPTION()s for CAIF 2024-01-05 08:06:35 -08:00
caif_socket.c net: fill in MODULE_DESCRIPTION()s for CAIF 2024-01-05 08:06:35 -08:00
caif_usb.c net: fill in MODULE_DESCRIPTION()s for CAIF 2024-01-05 08:06:35 -08:00
cfcnfg.c caif: move from strlcpy with unused retval to strscpy 2022-08-22 17:57:35 -07:00
cfctrl.c caif: reduce stack size, again 2025-08-15 12:13:40 +02:00
cfdbgl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
cfdgml.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
cffrml.c caif: fix integer underflow in cffrml_receive() 2026-01-08 10:14:01 +01:00
cfmuxl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
cfpkt_skbuff.c net: caif: use max() to simplify the code 2024-08-26 09:48:53 -07:00
cfrfml.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
cfserl.c net: caif: remove redundant assignment to variable expectlen 2021-12-28 12:52:24 +00:00
cfsrvl.c caif: Remove duplicate macro SRVL_CTRL_PKT_SIZE 2020-09-05 15:57:05 -07:00
cfutill.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
cfveil.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
cfvidl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 194 2019-05-30 11:29:22 -07:00
chnl_net.c net: caif: remove unused name 2024-09-12 20:29:04 -07:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00