net: add build-time checks for msg->msg_name size
[firefly-linux-kernel-4.4.55.git] / net / netrom / af_netrom.c
index 698814bfa7adfd4a58e9ec13f24eeb341ea86e08..b74aa0755521bc2bcfc757ea056c2e9c582fdf2e 100644 (file)
@@ -1028,7 +1028,7 @@ static int nr_sendmsg(struct kiocb *iocb, struct socket *sock,
 {
        struct sock *sk = sock->sk;
        struct nr_sock *nr = nr_sk(sk);
-       struct sockaddr_ax25 *usax = (struct sockaddr_ax25 *)msg->msg_name;
+       DECLARE_SOCKADDR(struct sockaddr_ax25 *, usax, msg->msg_name);
        int err;
        struct sockaddr_ax25 sax;
        struct sk_buff *skb;
@@ -1137,7 +1137,7 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock,
                      struct msghdr *msg, size_t size, int flags)
 {
        struct sock *sk = sock->sk;
-       struct sockaddr_ax25 *sax = (struct sockaddr_ax25 *)msg->msg_name;
+       DECLARE_SOCKADDR(struct sockaddr_ax25 *, sax, msg->msg_name);
        size_t copied;
        struct sk_buff *skb;
        int er;
@@ -1179,10 +1179,9 @@ static int nr_recvmsg(struct kiocb *iocb, struct socket *sock,
                sax->sax25_family = AF_NETROM;
                skb_copy_from_linear_data_offset(skb, 7, sax->sax25_call.ax25_call,
                              AX25_ADDR_LEN);
+               msg->msg_namelen = sizeof(*sax);
        }
 
-       msg->msg_namelen = sizeof(*sax);
-
        skb_free_datagram(sk, skb);
 
        release_sock(sk);