[NETFILTER]: Fix do_add_counters race, possible oops or info leak (CVE-2006-0039)
Changes
2 files changed · +2 −2
| File | Status | Add | Del | Content |
|---|---|---|---|---|
| net/ipv4/netfilter/arp_tables.c | modified | +1 | −1 | View file |
| net/ipv6/netfilter/ip6_tables.c | modified | +1 | −1 | View file |
net/ipv4/netfilter/arp_tables.c
View filediff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
index c2d92f9..d0d1919 100644
--- a/net/ipv4/netfilter/arp_tables.c
+++ b/net/ipv4/netfilter/arp_tables.c
@@ -948,7 +948,7 @@ static int do_add_counters(void __user *user, unsigned int len)
write_lock_bh(&t->lock);
private = t->private;
- if (private->number != paddc->num_counters) {
+ if (private->number != tmp.num_counters) {
ret = -EINVAL;
goto unlock_up_free;
}
net/ipv6/netfilter/ip6_tables.c
View filediff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
index 0a67303..2e72f89 100644
--- a/net/ipv6/netfilter/ip6_tables.c
+++ b/net/ipv6/netfilter/ip6_tables.c
@@ -1103,7 +1103,7 @@ do_add_counters(void __user *user, unsigned int len)
write_lock_bh(&t->lock);
private = t->private;
- if (private->number != paddc->num_counters) {
+ if (private->number != tmp.num_counters) {
ret = -EINVAL;
goto unlock_up_free;
}