From 96221ea4d3c22f893bec69631b90e050243ee906 Mon Sep 17 00:00:00 2001 From: USAMI Kenta Date: Fri, 20 Nov 2015 16:57:15 +0900 Subject: [PATCH] Add type check for between comparison Return 0 if $value is not numeric value --- src/Valitron/Validator.php | 8 ++++++-- tests/Valitron/ValidateTest.php | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 2cfac28..7322357 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -322,7 +322,9 @@ class Validator */ protected function validateMin($field, $value, $params) { - if (function_exists('bccomp')) { + if (!is_numeric($value)) { + return false; + } elseif (function_exists('bccomp')) { return !(bccomp($params[0], $value, 14) == 1); } else { return $params[0] <= $value; @@ -340,7 +342,9 @@ class Validator */ protected function validateMax($field, $value, $params) { - if (function_exists('bccomp')) { + if (!is_numeric($value)) { + return false; + } elseif (function_exists('bccomp')) { return !(bccomp($value, $params[0], 14) == 1); } else { return $params[0] >= $value; diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index 042f740..9834d2e 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -222,6 +222,14 @@ class ValidateTest extends BaseTestCase $v = new Validator(array('num' => 5)); $v->rule('min', 'num', 6); $this->assertFalse($v->validate()); + + $v = new Validator(array('test' => array())); + $v->rule('min', 'test', 1); + $this->assertFalse($v->validate()); + + $v = new Validator(array('test' => new stdClass)); + $v->rule('min', 'test', 1); + $this->assertFalse($v->validate()); } public function testMinInvalidFloat() @@ -262,6 +270,14 @@ class ValidateTest extends BaseTestCase $v = new Validator(array('num' => 5)); $v->rule('max', 'num', 4); $this->assertFalse($v->validate()); + + $v = new Validator(array('test' => array())); + $v->rule('min', 'test', 1); + $this->assertFalse($v->validate()); + + $v = new Validator(array('test' => new stdClass)); + $v->rule('min', 'test', 1); + $this->assertFalse($v->validate()); } public function testMaxInvalidFloat()