diff options
author | Jan Engelhardt <jengelh@medozas.de> | 2008-10-08 05:35:13 -0400 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2008-10-08 05:35:13 -0400 |
commit | 18219d3f7d6a5bc43825a41e0763158efbdb80d3 (patch) | |
tree | aca133d934ec93fc441d5a26937b2428d23573bd /net/bridge/netfilter/ebt_ip6.c | |
parent | d2f26037a38ada4a5d40d1cf0b32bc5289f50312 (diff) |
netfilter: ebtables: do centralized size checking
Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/bridge/netfilter/ebt_ip6.c')
-rw-r--r-- | net/bridge/netfilter/ebt_ip6.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/bridge/netfilter/ebt_ip6.c b/net/bridge/netfilter/ebt_ip6.c index 36efb3a7524..554dd68637c 100644 --- a/net/bridge/netfilter/ebt_ip6.c +++ b/net/bridge/netfilter/ebt_ip6.c | |||
@@ -13,14 +13,14 @@ | |||
13 | * | 13 | * |
14 | * Jan, 2008 | 14 | * Jan, 2008 |
15 | */ | 15 | */ |
16 | |||
17 | #include <linux/netfilter_bridge/ebtables.h> | ||
18 | #include <linux/netfilter_bridge/ebt_ip6.h> | ||
19 | #include <linux/ipv6.h> | 16 | #include <linux/ipv6.h> |
20 | #include <net/ipv6.h> | 17 | #include <net/ipv6.h> |
21 | #include <linux/in.h> | 18 | #include <linux/in.h> |
22 | #include <linux/module.h> | 19 | #include <linux/module.h> |
23 | #include <net/dsfield.h> | 20 | #include <net/dsfield.h> |
21 | #include <linux/netfilter/x_tables.h> | ||
22 | #include <linux/netfilter_bridge/ebtables.h> | ||
23 | #include <linux/netfilter_bridge/ebt_ip6.h> | ||
24 | 24 | ||
25 | struct tcpudphdr { | 25 | struct tcpudphdr { |
26 | __be16 src; | 26 | __be16 src; |
@@ -97,8 +97,6 @@ static int ebt_ip6_check(const char *tablename, unsigned int hookmask, | |||
97 | { | 97 | { |
98 | struct ebt_ip6_info *info = (struct ebt_ip6_info *)data; | 98 | struct ebt_ip6_info *info = (struct ebt_ip6_info *)data; |
99 | 99 | ||
100 | if (datalen != EBT_ALIGN(sizeof(struct ebt_ip6_info))) | ||
101 | return -EINVAL; | ||
102 | if (e->ethproto != htons(ETH_P_IPV6) || e->invflags & EBT_IPROTO) | 100 | if (e->ethproto != htons(ETH_P_IPV6) || e->invflags & EBT_IPROTO) |
103 | return -EINVAL; | 101 | return -EINVAL; |
104 | if (info->bitmask & ~EBT_IP6_MASK || info->invflags & ~EBT_IP6_MASK) | 102 | if (info->bitmask & ~EBT_IP6_MASK || info->invflags & ~EBT_IP6_MASK) |
@@ -125,6 +123,7 @@ static struct ebt_match filter_ip6 = | |||
125 | .name = EBT_IP6_MATCH, | 123 | .name = EBT_IP6_MATCH, |
126 | .match = ebt_filter_ip6, | 124 | .match = ebt_filter_ip6, |
127 | .check = ebt_ip6_check, | 125 | .check = ebt_ip6_check, |
126 | .matchsize = XT_ALIGN(sizeof(struct ebt_ip6_info)), | ||
128 | .me = THIS_MODULE, | 127 | .me = THIS_MODULE, |
129 | }; | 128 | }; |
130 | 129 | ||