can: isotp: check CAN address family in isotp_bind()
Subsystems (2)
Oliver Hartkopp
maintainerPATCH 1/1 can: isotp: check CAN address family in isotp_bind()
Add missing check to block non-AF_CAN binds.
Syzbot created some code which matched the right sockaddr struct size but used AF_XDP (0x2C) instead of AF_CAN (0x1D) in the address family field:
bind$xdp(r2, &(0x7f0000000540)={0x2c, 0x0, r4, 0x0, r2}, 0x10)
^^^^
This has no funtional impact but the userspace should be notified about the wrong address family field content.
Reported-by [email protected]
Signed-off-by Oliver Hartkopp <[email protected]>
--- net/can/isotp.c | 3 +++ 1 file changed, 3 insertions(+)
net/can/isotp.c +3 -0
@@ -1218,10 +1218,13 @@ static int isotp_bind(struct socket *sock, struct sockaddr *uaddr, int len)int notify_enetdown =0 ;if (len <ISOTP_MIN_NAMELEN )return -EINVAL ; +if (addr->can_family !=AF_CAN ) +return -EINVAL ; +/* sanitize tx CAN identifier */ if (tx_id &CAN_EFF_FLAG ) tx_id &= (CAN_EFF_FLAG |CAN_EFF_MASK );else tx_id &=CAN_SFF_MASK ;
Signature · 1 line
2.35.1