diff options
| author | David S. Miller <davem@davemloft.net> | 2015-05-22 14:25:45 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-05-22 14:25:45 -0400 |
| commit | 572152adfba711f770fc7ec5d140070a91d8e045 (patch) | |
| tree | f674c351988d101c686503b9c4af56a2b28fd167 /net/ipv6 | |
| parent | 381c759d9916c42959515ad34a6d467e24a88e93 (diff) | |
| parent | faecbb45ebefb20260ad4a631e011e93c896cb73 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf
Pablo Neira Ayuso says:
====================
Netfilter fixes for net
The following patchset contain Netfilter fixes for your net tree, they are:
1) Fix a race in nfnetlink_log and nfnetlink_queue that can lead to a crash.
This problem is due to wrong order in the per-net registration and netlink
socket events. Patch from Francesco Ruggeri.
2) Make sure that counters that userspace pass us are higher than 0 in all the
x_tables frontends. Discovered via Trinity, patch from Dave Jones.
3) Revert a patch for br_netfilter to rely on the conntrack status bits. This
breaks stateless IPv6 NAT transformations. Patch from Florian Westphal.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
| -rw-r--r-- | net/ipv6/netfilter/ip6_tables.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 1a732a1d3c8e..62f5b0d0bc9b 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c | |||
| @@ -1275,6 +1275,9 @@ do_replace(struct net *net, const void __user *user, unsigned int len) | |||
| 1275 | /* overflow check */ | 1275 | /* overflow check */ |
| 1276 | if (tmp.num_counters >= INT_MAX / sizeof(struct xt_counters)) | 1276 | if (tmp.num_counters >= INT_MAX / sizeof(struct xt_counters)) |
| 1277 | return -ENOMEM; | 1277 | return -ENOMEM; |
| 1278 | if (tmp.num_counters == 0) | ||
| 1279 | return -EINVAL; | ||
| 1280 | |||
| 1278 | tmp.name[sizeof(tmp.name)-1] = 0; | 1281 | tmp.name[sizeof(tmp.name)-1] = 0; |
| 1279 | 1282 | ||
| 1280 | newinfo = xt_alloc_table_info(tmp.size); | 1283 | newinfo = xt_alloc_table_info(tmp.size); |
| @@ -1822,6 +1825,9 @@ compat_do_replace(struct net *net, void __user *user, unsigned int len) | |||
| 1822 | return -ENOMEM; | 1825 | return -ENOMEM; |
| 1823 | if (tmp.num_counters >= INT_MAX / sizeof(struct xt_counters)) | 1826 | if (tmp.num_counters >= INT_MAX / sizeof(struct xt_counters)) |
| 1824 | return -ENOMEM; | 1827 | return -ENOMEM; |
| 1828 | if (tmp.num_counters == 0) | ||
| 1829 | return -EINVAL; | ||
| 1830 | |||
| 1825 | tmp.name[sizeof(tmp.name)-1] = 0; | 1831 | tmp.name[sizeof(tmp.name)-1] = 0; |
| 1826 | 1832 | ||
| 1827 | newinfo = xt_alloc_table_info(tmp.size); | 1833 | newinfo = xt_alloc_table_info(tmp.size); |
