]> Pileus Git - ~andy/linux/blobdiff - net/can/raw.c
net: add build-time checks for msg->msg_name size
[~andy/linux] / net / can / raw.c
index 641e1c895123ac114330635c43d0b2ed778c2ae7..07d72d852324f23a8fffdc71798e89602b861977 100644 (file)
@@ -675,8 +675,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
        int err;
 
        if (msg->msg_name) {
-               struct sockaddr_can *addr =
-                       (struct sockaddr_can *)msg->msg_name;
+               DECLARE_SOCKADDR(struct sockaddr_can *, addr, msg->msg_name);
 
                if (msg->msg_namelen < sizeof(*addr))
                        return -EINVAL;
@@ -775,6 +774,7 @@ static int raw_recvmsg(struct kiocb *iocb, struct socket *sock,
        sock_recv_ts_and_drops(msg, sk, skb);
 
        if (msg->msg_name) {
+               __sockaddr_check_size(sizeof(struct sockaddr_can));
                msg->msg_namelen = sizeof(struct sockaddr_can);
                memcpy(msg->msg_name, skb->cb, msg->msg_namelen);
        }