diff --git a/ipaddresses.php b/ipaddresses.php index 02c1d93..fae63e3 100644 --- a/ipaddresses.php +++ b/ipaddresses.php @@ -77,7 +77,6 @@ class ipaddresses @list ($ip, $cidr) = @explode ("/", $ip); if ($cidr === null) return false; - $cidr = intval ($cidr); $rc = filter_var ($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); if ($rc === false) return false; @@ -98,7 +97,6 @@ class ipaddresses @list ($ip, $cidr) = @explode ("/", $ip); if ($cidr === null) return false; - $cidr = intval ($cidr); $rc = filter_var ($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); if ($rc === false) return false; @@ -113,9 +111,11 @@ class ipaddresses */ public function validCIDR ($cidr) { - if (! is_integer ($cidr)) + if (! is_integer ($cidr) && ! is_integer ($cidr)) throw new \Exception (dgettext("domframework", "Invalid CIDR provided"), 500); + if (strspn ($cidr, "0123456879") !== strlen ($cidr)) + return false; if ($cidr < 0 || $cidr > 128) return false; return true; @@ -127,9 +127,11 @@ class ipaddresses */ public function validIPv4CIDR ($cidr) { - if (! is_integer ($cidr)) + if (! is_integer ($cidr) && ! is_string ($cidr)) throw new \Exception (dgettext("domframework", "Invalid CIDR provided"), 500); + if (strspn ($cidr, "0123456879") !== strlen ($cidr)) + return false; if ($cidr < 0 || $cidr > 32) return false; return true; @@ -141,9 +143,11 @@ class ipaddresses */ public function validIPv6CIDR ($cidr) { - if (! is_integer ($cidr)) + if (! is_integer ($cidr) && ! is_string ($cidr)) throw new \Exception (dgettext("domframework", "Invalid CIDR provided"), 500); + if (strspn ($cidr, "0123456879") !== strlen ($cidr)) + return false; if ($cidr < 0 || $cidr > 128) return false; return true;