mirror-linux/net/caif
Junrui Luo 8a11ff0948 caif: fix integer underflow in cffrml_receive()
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>
2025-12-11 01:35:41 -08:00
..
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile
caif_dev.c net: fill in MODULE_DESCRIPTION()s for CAIF 2024-01-05 08:06:35 -08:00
caif_socket.c net: Convert proto_ops connect() callbacks to use sockaddr_unsized 2025-11-04 19:10:32 -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: Replace memset(0) + strscpy() with strscpy_pad() 2025-08-12 14:08:56 -07: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() 2025-12-11 01:35:41 -08: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 unused cfsrvl_getphyid 2024-10-08 15:33:49 -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 rtnetlink: Pack newlink() params into struct 2025-02-21 15:28:02 -08:00