]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[IPV6]: fix lockup via /proc/net/ip6_flowlabel (CVE-2006-5619)
authorJames Morris <jmorris@namei.org>
Sun, 5 Nov 2006 08:00:45 +0000 (09:00 +0100)
committerAdrian Bunk <bunk@stusta.de>
Sun, 5 Nov 2006 08:00:45 +0000 (09:00 +0100)
There's a bug in the seqfile handling for /proc/net/ip6_flowlabel, where,
after finding a flowlabel, the code will loop forever not finding any
further flowlabels, first traversing the rest of the hash bucket then just
looping.

This patch fixes the problem by breaking after the hash bucket has been
traversed.

Note that this bug can cause lockups and oopses, and is trivially invoked
by an unpriveleged user.

Signed-off-by: James Morris <jmorris@namei.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
net/ipv6/ip6_flowlabel.c

index 69cbe8a66d02ce7f97cc4163b216b45251972434..c19f5e30fc2f8c7de9622323f41ad98114591cd1 100644 (file)
@@ -589,6 +589,8 @@ static struct ip6_flowlabel *ip6fl_get_next(struct seq_file *seq, struct ip6_flo
        while (!fl) {
                if (++state->bucket <= FL_HASH_MASK)
                        fl = fl_ht[state->bucket];
+               else
+                       break;
        }
        return fl;
 }