netlabel: Fix NULL pointer exception caused by CALIPSO on IPv4 sockets
authorDebin Zhu <mowenroot@163.com>
Tue, 1 Apr 2025 12:40:18 +0000 (20:40 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 2 Apr 2025 23:01:04 +0000 (16:01 -0700)
commit078aabd567de3d63d37d7673f714e309d369e6e2
tree97882b9eba5687bc500a6fa0c92ea0dfffdd501a
parentacc4d5ff0b61eb1715c498b6536c38c1feb7f3c1
netlabel: Fix NULL pointer exception caused by CALIPSO on IPv4 sockets

When calling netlbl_conn_setattr(), addr->sa_family is used
to determine the function behavior. If sk is an IPv4 socket,
but the connect function is called with an IPv6 address,
the function calipso_sock_setattr() is triggered.
Inside this function, the following code is executed:

sk_fullsock(__sk) ? inet_sk(__sk)->pinet6 : NULL;

Since sk is an IPv4 socket, pinet6 is NULL, leading to a
null pointer dereference.

This patch fixes the issue by checking if inet6_sk(sk)
returns a NULL pointer before accessing pinet6.

Signed-off-by: Debin Zhu <mowenroot@163.com>
Signed-off-by: Bitao Ouyang <1985755126@qq.com>
Acked-by: Paul Moore <paul@paul-moore.com>
Fixes: ceba1832b1b2 ("calipso: Set the calipso socket label to match the secattr.")
Link: https://patch.msgid.link/20250401124018.4763-1-mowenroot@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/calipso.c