]> git.itanic.dy.fi Git - linux-stable/commitdiff
net: Make the copy length in af_packet sockopt handler unsigned
authorArjan van de Ven <arjan@linux.intel.com>
Wed, 30 Sep 2009 11:54:47 +0000 (13:54 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 5 Oct 2009 16:32:22 +0000 (09:32 -0700)
fixed upstream in commit b7058842c940ad2c08dd829b21e5c92ebe3b8758 in a different way

The length of the to-copy data structure is currently stored in
a signed integer. However many comparisons are done with sizeof(..)
which is unsigned. It's more suitable for this variable to be unsigned
to make these comparisons more naturally right.

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/packet/af_packet.c

index ebe5718baa319bc004cea0231a9038ce84e1c55f..f9f71770de5b83d780bc519fbba52394db2a2142 100644 (file)
@@ -1836,7 +1836,7 @@ packet_setsockopt(struct socket *sock, int level, int optname, char __user *optv
 static int packet_getsockopt(struct socket *sock, int level, int optname,
                             char __user *optval, int __user *optlen)
 {
-       int len;
+       unsigned int len;
        int val;
        struct sock *sk = sock->sk;
        struct packet_sock *po = pkt_sk(sk);
@@ -1849,7 +1849,7 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
        if (get_user(len, optlen))
                return -EFAULT;
 
-       if (len < 0)
+       if ((int)len < 0)
                return -EINVAL;
 
        switch (optname) {