diff options
Diffstat (limited to 'src/charon/plugins/kernel_netlink/kernel_netlink_net.c')
-rw-r--r-- | src/charon/plugins/kernel_netlink/kernel_netlink_net.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c index 6e1489c81..f14776287 100644 --- a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c +++ b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c @@ -698,16 +698,14 @@ static bool addr_in_subnet(chunk_t addr, chunk_t net, int net_len) /* scan through all bits, beginning in the front */ for (byte = 0; byte < addr.len; byte++) { - for (bit = 0; bit < 8; bit++) + for (bit = 7; bit >= 0; bit--) { - u_char bitpos = 1 << (7-bit); - /* check if bits are equal (or we reached the end of the net) */ if (bit + byte * 8 > net_len) { return TRUE; } - if ((bitpos & addr.ptr[byte]) != (bitpos & net.ptr[byte])) + if (((1<<bit) & addr.ptr[byte]) != ((1<<bit) & net.ptr[byte])) { return FALSE; } |