diff options
author | Thomas Graf <tgraf@suug.ch> | 2013-01-31 09:59:10 (GMT) |
---|---|---|
committer | Thomas Graf <tgraf@suug.ch> | 2013-01-31 09:59:10 (GMT) |
commit | 87458abbd03b0928b9d2ddd84b7bcb07892450d0 (patch) | |
tree | 69603776c48f6c1b1aad13352d891c955afea067 | |
parent | 73cb5f57bab8e0cbe5958ffc03dd126f14e07bf6 (diff) | |
download | libnl-87458abbd03b0928b9d2ddd84b7bcb07892450d0.zip libnl-87458abbd03b0928b9d2ddd84b7bcb07892450d0.tar.gz libnl-87458abbd03b0928b9d2ddd84b7bcb07892450d0.tar.bz2 |
Fix mask calculation in nl_addr_cmp_prefix()
Signed-off-by: Malte Langermann <mlangermann@radiodata.biz>
Signed-off-by: Thomas Graf <tgraf@suug.ch>
-rw-r--r-- | lib/addr.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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); |