From 634017d95c7c64378004cdd0cf75e54c64601f97 Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:13:22 +0530 Subject: [PATCH 1/9] security fix --- .../Validation/Rules/RequiredIf.php | 6 ++++- tests/Validation/ValidationRequiredIfTest.php | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Validation/Rules/RequiredIf.php b/src/Illuminate/Validation/Rules/RequiredIf.php index c4a1001d063a..58ffdee9d5ee 100644 --- a/src/Illuminate/Validation/Rules/RequiredIf.php +++ b/src/Illuminate/Validation/Rules/RequiredIf.php @@ -19,7 +19,11 @@ class RequiredIf */ public function __construct($condition) { - $this->condition = $condition; + if(!is_string($condition) && (is_bool($condition) || is_callable($condition))) { + $this->condition = $condition; + } else { + throw new InvalidArgumentException("Condition type must be 'callable' or 'bool'."); + } } /** diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index b27cc6d4d57f..48a7f23c12e8 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -29,4 +29,30 @@ public function testItClousureReturnsFormatsAStringVersionOfTheRule() $this->assertSame('', (string) $rule); } + + public function testItOnlyCallableAndBooleanAreAcceptableArgumentsOfTheRule() + { + $rule = new RequiredIf(false); + + $rule = new RequiredIf(true); + + $this->expectException(InvalidArgumentException::class); + + $rule = new RequiredIf('phpinfo'); + + $rule = new RequiredIf(12.3); + + $rule = new RequiredIf(new stdClass()); + } + + public function testItReturnedRuleIsNotSerializable() + { + $this->expectException(Exception::class); + + $rule = serialize(new RequiredIf(function () { + return true; + })); + + $rule = serialize(new RequiredIf()); + } } From 709f17f4ed4a68ebb333eaedb0b59ef6797f13c0 Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:24:34 +0530 Subject: [PATCH 2/9] Style guide fix --- src/Illuminate/Validation/Rules/RequiredIf.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Validation/Rules/RequiredIf.php b/src/Illuminate/Validation/Rules/RequiredIf.php index 58ffdee9d5ee..2014a37215cb 100644 --- a/src/Illuminate/Validation/Rules/RequiredIf.php +++ b/src/Illuminate/Validation/Rules/RequiredIf.php @@ -19,7 +19,7 @@ class RequiredIf */ public function __construct($condition) { - if(!is_string($condition) && (is_bool($condition) || is_callable($condition))) { + if(! is_string($condition) && (is_bool($condition) || is_callable($condition))) { $this->condition = $condition; } else { throw new InvalidArgumentException("Condition type must be 'callable' or 'bool'."); From 45bec5b9c61cd18cc833f40acdab1ec5dea0c03a Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:26:58 +0530 Subject: [PATCH 3/9] style guide fix --- src/Illuminate/Validation/Rules/RequiredIf.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Validation/Rules/RequiredIf.php b/src/Illuminate/Validation/Rules/RequiredIf.php index 2014a37215cb..ffbe042eb1bb 100644 --- a/src/Illuminate/Validation/Rules/RequiredIf.php +++ b/src/Illuminate/Validation/Rules/RequiredIf.php @@ -19,7 +19,7 @@ class RequiredIf */ public function __construct($condition) { - if(! is_string($condition) && (is_bool($condition) || is_callable($condition))) { + if (! is_string($condition) && (is_bool($condition) || is_callable($condition))) { $this->condition = $condition; } else { throw new InvalidArgumentException("Condition type must be 'callable' or 'bool'."); From 5ecdd12cdd272fd40c6add0b7dda5bd40ae2bb05 Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:31:02 +0530 Subject: [PATCH 4/9] Added use Exception to pass tests --- tests/Validation/ValidationRequiredIfTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index 48a7f23c12e8..1770cfca1015 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -4,6 +4,7 @@ use Illuminate\Validation\Rules\RequiredIf; use PHPUnit\Framework\TestCase; +use Exception; class ValidationRequiredIfTest extends TestCase { From af7806c8dfa021d6cc3fdf1f4bf6d5965cacf2c6 Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:31:53 +0530 Subject: [PATCH 5/9] :/ another style guide fix --- tests/Validation/ValidationRequiredIfTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index 1770cfca1015..922c4fa123ef 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -2,9 +2,9 @@ namespace Illuminate\Tests\Validation; +use Exception; use Illuminate\Validation\Rules\RequiredIf; use PHPUnit\Framework\TestCase; -use Exception; class ValidationRequiredIfTest extends TestCase { From 012dba2dd4e56ac6f6a0909701d84c64d978730d Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:35:32 +0530 Subject: [PATCH 6/9] oh man... --- tests/Validation/ValidationRequiredIfTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index 922c4fa123ef..0a0ef596d305 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -3,6 +3,7 @@ namespace Illuminate\Tests\Validation; use Exception; +use InvalidArgumentException; use Illuminate\Validation\Rules\RequiredIf; use PHPUnit\Framework\TestCase; From 0bc5549b405513b7e49c21ba95e14bd60db81adf Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:36:18 +0530 Subject: [PATCH 7/9] another style guide fix --- tests/Validation/ValidationRequiredIfTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index 0a0ef596d305..5be53408f023 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -3,8 +3,8 @@ namespace Illuminate\Tests\Validation; use Exception; -use InvalidArgumentException; use Illuminate\Validation\Rules\RequiredIf; +use InvalidArgumentException; use PHPUnit\Framework\TestCase; class ValidationRequiredIfTest extends TestCase From c3eff33ebc88c661a1567dfa9ea6b1f6be4284a0 Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:42:39 +0530 Subject: [PATCH 8/9] another test fix --- src/Illuminate/Validation/Rules/RequiredIf.php | 4 ++-- tests/Validation/ValidationRequiredIfTest.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Illuminate/Validation/Rules/RequiredIf.php b/src/Illuminate/Validation/Rules/RequiredIf.php index 58ffdee9d5ee..57666e9019ae 100644 --- a/src/Illuminate/Validation/Rules/RequiredIf.php +++ b/src/Illuminate/Validation/Rules/RequiredIf.php @@ -19,10 +19,10 @@ class RequiredIf */ public function __construct($condition) { - if(!is_string($condition) && (is_bool($condition) || is_callable($condition))) { + if (! is_string($condition) && (is_bool($condition) || is_callable($condition))) { $this->condition = $condition; } else { - throw new InvalidArgumentException("Condition type must be 'callable' or 'bool'."); + throw new \InvalidArgumentException("Condition type must be 'callable' or 'bool'."); } } diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index 48a7f23c12e8..fba0cc80fb43 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -36,7 +36,7 @@ public function testItOnlyCallableAndBooleanAreAcceptableArgumentsOfTheRule() $rule = new RequiredIf(true); - $this->expectException(InvalidArgumentException::class); + $this->expectException(\InvalidArgumentException::class); $rule = new RequiredIf('phpinfo'); @@ -47,7 +47,7 @@ public function testItOnlyCallableAndBooleanAreAcceptableArgumentsOfTheRule() public function testItReturnedRuleIsNotSerializable() { - $this->expectException(Exception::class); + $this->expectException(\Exception::class); $rule = serialize(new RequiredIf(function () { return true; From 814d6bc76ea7c259ff5b3776e02a139b5ba4b52b Mon Sep 17 00:00:00 2001 From: 0xcrypto Date: Mon, 14 Jun 2021 23:43:48 +0530 Subject: [PATCH 9/9] another test fix --- tests/Validation/ValidationRequiredIfTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/Validation/ValidationRequiredIfTest.php b/tests/Validation/ValidationRequiredIfTest.php index 5e8eec4c8e76..fba0cc80fb43 100644 --- a/tests/Validation/ValidationRequiredIfTest.php +++ b/tests/Validation/ValidationRequiredIfTest.php @@ -2,9 +2,7 @@ namespace Illuminate\Tests\Validation; -use Exception; use Illuminate\Validation\Rules\RequiredIf; -use InvalidArgumentException; use PHPUnit\Framework\TestCase; class ValidationRequiredIfTest extends TestCase