r2176 - createIPv4Prefix() didn't detect intersects, where signed and unsigned integ...
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 28 Aug 2008 11:20:17 +0000 (11:20 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 28 Aug 2008 11:20:17 +0000 (11:20 +0000)
ChangeLog
inc/database.php

index 1e87888..d9862fc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,7 @@
        bugfix: tag tree is now always correctly sorted
        bugfix: fix a typo in NAT rules displaying code (pointed out by Piotr Nowacki)
        bugfix: error message was broken in the installer (reported by Thomas Thep)
+       bugfix: IPv4 network check sometimes failed to detect duplicate networks
 0.16.2 2008-08-21
        bugfix: IP address picker was broken
        bugfix: more message processing fixes
index 71a2da0..b4aee36 100644 (file)
@@ -2951,19 +2951,17 @@ function createIPv4Prefix ($range = '', $name = '', $is_bcast = FALSE, $taglist
 
        $query =
                "select ".
-               "id, ip, mask, name ".
-               "from IPRanges ";
+               "id, INET_NTOA(ip) as dottedquad, mask, name ".
+               "from IPRanges";
 
        $result = useSelectBlade ($query, __FUNCTION__);
 
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
        {
-               $otherip = $row['ip'];
-               $othermask = binMaskFromDec($row['mask']);
-               if (($otherip & $othermask) == ($ipL & $othermask))
-                       return "This subnet intersects with ".long2ip($row['ip'])."/${row['mask']}";
-               if (($otherip & $binmask) == ($ipL & $binmask))
-                       return "This subnet intersects with ".long2ip($row['ip'])."/${row['mask']}";
+               $otherip = ip2long ($row['dottedquad']);
+               $othermask = binMaskFromDec ($row['mask']);
+               if (($otherip & $othermask) == ($ipL & $othermask) or ($otherip & $binmask) == ($ipL & $binmask))
+                       return "This subnet intersects with ${row['dottedquad']}/${row['mask']}";
        }
        $result->closeCursor();
        unset ($result);