Skip to content

Commit

Permalink
batman-adv: fix bla compare function
Browse files Browse the repository at this point in the history
The address and the VLAN VID may not be packed in the respective
structs. Fix this by comparing the elements individually.

Reported-by: Marek Lindner <lindner_marek@yahoo.de>
Reported-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
  • Loading branch information
Simon Wunderlich authored and Antonio Quartulli committed Nov 21, 2012
1 parent 981d890 commit c76d152
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions net/batman-adv/bridge_loop_avoidance.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,15 @@ static int batadv_compare_backbone_gw(const struct hlist_node *node,
{
const void *data1 = container_of(node, struct batadv_backbone_gw,
hash_entry);
const struct batadv_backbone_gw *gw1 = data1, *gw2 = data2;

return (memcmp(data1, data2, ETH_ALEN + sizeof(short)) == 0 ? 1 : 0);
if (!batadv_compare_eth(gw1->orig, gw2->orig))
return 0;

if (gw1->vid != gw2->vid)
return 0;

return 1;
}

/* compares address and vid of two claims */
Expand All @@ -87,8 +94,15 @@ static int batadv_compare_claim(const struct hlist_node *node,
{
const void *data1 = container_of(node, struct batadv_claim,
hash_entry);
const struct batadv_claim *cl1 = data1, *cl2 = data2;

return (memcmp(data1, data2, ETH_ALEN + sizeof(short)) == 0 ? 1 : 0);
if (!batadv_compare_eth(cl1->addr, cl2->addr))
return 0;

if (cl1->vid != cl2->vid)
return 0;

return 1;
}

/* free a backbone gw */
Expand Down

0 comments on commit c76d152

Please sign in to comment.