fixed loop termination criterion in addr_in_subnet(). Thanks go to Wolfgang Steudel, TU Ilmenau
This commit is contained in:
@@ -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 */
|
/* scan through all bits, beginning in the front */
|
||||||
for (byte = 0; byte < addr.len; byte++)
|
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) */
|
/* check if bits are equal (or we reached the end of the net) */
|
||||||
if (bit + byte * 8 > net_len)
|
if (bit + byte * 8 > net_len)
|
||||||
{
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (((1<<bit) & addr.ptr[byte]) != ((1<<bit) & net.ptr[byte]))
|
if ((bitpos & addr.ptr[byte]) != (bitpos & net.ptr[byte]))
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user