summaryrefslogtreecommitdiff
path: root/net/netfilter/xt_mac.c
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@medozas.de>2010-03-16 21:44:44 +0100
committerJan Engelhardt <jengelh@medozas.de>2010-03-18 14:20:06 +0100
commite5042a290097b7c2fc9b6a247585b6ed07b13026 (patch)
treeb5eae5b4eb0c45c93fb4c752c164419c7e01535e /net/netfilter/xt_mac.c
parent1d1c397db95f1c0cd95f6fa633c1e68acfaacec3 (diff)
netfilter: xtables: limit xt_mac to ethernet devices
I do not see a point of allowing the MAC module to work with devices that don't possibly have one, e.g. various tunnel interfaces such as tun and sit. Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Diffstat (limited to 'net/netfilter/xt_mac.c')
-rw-r--r--net/netfilter/xt_mac.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/netfilter/xt_mac.c b/net/netfilter/xt_mac.c
index 2039d0741b37..b971ce93773e 100644
--- a/net/netfilter/xt_mac.c
+++ b/net/netfilter/xt_mac.c
@@ -10,6 +10,7 @@
#include <linux/module.h>
#include <linux/skbuff.h>
+#include <linux/if_arp.h>
#include <linux/if_ether.h>
#include <linux/etherdevice.h>
@@ -29,6 +30,8 @@ static bool mac_mt(const struct sk_buff *skb, const struct xt_match_param *par)
const struct xt_mac_info *info = par->matchinfo;
bool ret;
+ if (skb->dev == NULL || skb->dev->type != ARPHRD_ETHER)
+ return false;
if (skb_mac_header(skb) < skb->head)
return false;
if (skb_mac_header(skb) + ETH_HLEN > skb->data)