Fix mask calculation in nl_addr_cmp_prefix()

Signed-off-by: Malte Langermann <mlangermann@radiodata.biz>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
This commit is contained in:
Thomas Graf 2013-01-31 10:59:10 +01:00
parent 73cb5f57ba
commit 87458abbd0

View file

@ -525,8 +525,8 @@ int nl_addr_cmp_prefix(struct nl_addr *a, struct nl_addr *b)
int bytes = len / 8;
d = memcmp(a->a_addr, b->a_addr, bytes);
if (d == 0) {
int mask = (1UL << (len % 8)) - 1UL;
if (d == 0 && (len % 8) != 0) {
int mask = (0xFF00 >> (len % 8)) & 0xFF;
d = (a->a_addr[bytes] & mask) -
(b->a_addr[bytes] & mask);