From 316e313d3bf4845638d4c897d936dbd401397779 Mon Sep 17 00:00:00 2001 From: hartkopp Date: Tue, 19 Apr 2011 12:27:58 +0000 Subject: [PATCH] can: test size of struct sockaddr in sendmsg This patch makes the CAN socket code conform to the manpage of sendmsg. Signed-off-by: Kurt Van Dijck Acked-by: Oliver Hartkopp Signed-off-by: David S. Miller git-svn-id: svn://svn.berlios.de//socketcan/trunk@1236 030b6a49-0b11-0410-94ab-b0dab22257f2 --- kernel/2.6/net/can/bcm.c | 3 +++ kernel/2.6/net/can/raw.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/kernel/2.6/net/can/bcm.c b/kernel/2.6/net/can/bcm.c index d12a8e5..a33218b 100644 --- a/kernel/2.6/net/can/bcm.c +++ b/kernel/2.6/net/can/bcm.c @@ -1381,6 +1381,9 @@ static int bcm_sendmsg(struct kiocb *iocb, struct socket *sock, struct sockaddr_can *addr = (struct sockaddr_can *)msg->msg_name; + if (msg->msg_namelen < sizeof(*addr)) + return -EINVAL; + if (addr->can_family != AF_CAN) return -EINVAL; diff --git a/kernel/2.6/net/can/raw.c b/kernel/2.6/net/can/raw.c index 440989d..68937ce 100644 --- a/kernel/2.6/net/can/raw.c +++ b/kernel/2.6/net/can/raw.c @@ -688,6 +688,9 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock, struct sockaddr_can *addr = (struct sockaddr_can *)msg->msg_name; + if (msg->msg_namelen < sizeof(*addr)) + return -EINVAL; + if (addr->can_family != AF_CAN) return -EINVAL; -- 2.39.2