]> Pileus Git - ~andy/linux/blobdiff - net/socket.c
Linux 3.14
[~andy/linux] / net / socket.c
index fd8d86e06f95f5fbb5d146e5a8afd97ef3d65426..a19ae1968d379d70ad36e51039d79469cfe30d18 100644 (file)
@@ -1986,6 +1986,10 @@ static int copy_msghdr_from_user(struct msghdr *kmsg,
 {
        if (copy_from_user(kmsg, umsg, sizeof(struct msghdr)))
                return -EFAULT;
+
+       if (kmsg->msg_namelen < 0)
+               return -EINVAL;
+
        if (kmsg->msg_namelen > sizeof(struct sockaddr_storage))
                kmsg->msg_namelen = sizeof(struct sockaddr_storage);
        return 0;