From 724808f1df6a30706af56740197892770733d883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Hundeb=C3=B8ll?= Date: Thu, 5 Jul 2012 11:34:28 +0200 Subject: [PATCH] --- yaml --- r: 327606 b: refs/heads/master c: 74ee3634dcd1f11624192f72f458bcb5a04e4822 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/batman-adv/routing.c | 18 +++--------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index f19638e0b9fc..d9a26fbf5f0e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff51fd70ad3e6bbf1ffc7d2a1d6a845d081df5a1 +refs/heads/master: 74ee3634dcd1f11624192f72f458bcb5a04e4822 diff --git a/trunk/net/batman-adv/routing.c b/trunk/net/batman-adv/routing.c index a79ded53dd94..4961278086bd 100644 --- a/trunk/net/batman-adv/routing.c +++ b/trunk/net/batman-adv/routing.c @@ -609,29 +609,17 @@ int batadv_recv_tt_query(struct sk_buff *skb, struct batadv_hard_iface *recv_if) struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); struct batadv_tt_query_packet *tt_query; uint16_t tt_size; - struct ethhdr *ethhdr; + int hdr_size = sizeof(*tt_query); char tt_flag; size_t packet_size; - /* drop packet if it has not necessary minimum size */ - if (unlikely(!pskb_may_pull(skb, - sizeof(struct batadv_tt_query_packet)))) - goto out; + if (batadv_check_unicast_packet(skb, hdr_size) < 0) + return NET_RX_DROP; /* I could need to modify it */ if (skb_cow(skb, sizeof(struct batadv_tt_query_packet)) < 0) goto out; - ethhdr = (struct ethhdr *)skb_mac_header(skb); - - /* packet with unicast indication but broadcast recipient */ - if (is_broadcast_ether_addr(ethhdr->h_dest)) - goto out; - - /* packet with broadcast sender address */ - if (is_broadcast_ether_addr(ethhdr->h_source)) - goto out; - tt_query = (struct batadv_tt_query_packet *)skb->data; switch (tt_query->flags & BATADV_TT_QUERY_TYPE_MASK) {