From 82ca9f618004bbc41b46622f3e405f5a74d1c1cd Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Thu, 9 Aug 2018 08:25:43 +0000 Subject: [PATCH] ipaddresses : update CIDR tests : was not catch error if the last char of CIDR was a letter git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@4368 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- ipaddresses.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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;