aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/plugins/kernel_netlink/kernel_netlink_net.c
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2008-10-07 21:41:45 +0000
committerAndreas Steffen <andreas.steffen@strongswan.org>2008-10-07 21:41:45 +0000
commit7a07cd1c75839a0d6d53b5462b9fd40f7608e47e (patch)
tree026c1473bc0b05c91c7d67969e49caca9ea3c98f /src/charon/plugins/kernel_netlink/kernel_netlink_net.c
parentc8ba5125d6915760926b0b29d1bdca1e5c986c32 (diff)
downloadstrongswan-7a07cd1c75839a0d6d53b5462b9fd40f7608e47e.tar.bz2
strongswan-7a07cd1c75839a0d6d53b5462b9fd40f7608e47e.tar.xz
fixed loop termination criterion in addr_in_subnet(). Thanks go to Wolfgang Steudel, TU Ilmenau
Diffstat (limited to 'src/charon/plugins/kernel_netlink/kernel_netlink_net.c')
-rw-r--r--src/charon/plugins/kernel_netlink/kernel_netlink_net.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c
index f14776287..6e1489c81 100644
--- a/src/charon/plugins/kernel_netlink/kernel_netlink_net.c
+++ b/src/charon/plugins/kernel_netlink/kernel_netlink_net.c
@@ -698,14 +698,16 @@ 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 = 7; bit >= 0; bit--)
+ for (bit = 0; bit < 8; 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 (((1<<bit) & addr.ptr[byte]) != ((1<<bit) & net.ptr[byte]))
+ if ((bitpos & addr.ptr[byte]) != (bitpos & net.ptr[byte]))
{
return FALSE;
}