From 1ddc60ed6a5c82fe2bcd9a94bcfa3d76d3211c34 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 30 Jul 2021 19:02:48 +0200 Subject: [PATCH 1/4] Cover non-empty-string in addslashes/addcslashes --- src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php index 17d77f39e0..67d0625075 100644 --- a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php +++ b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php @@ -17,6 +17,8 @@ class NonEmptyStringFunctionsReturnTypeExtension implements DynamicFunctionRetur public function isFunctionSupported(FunctionReflection $functionReflection): bool { return in_array($functionReflection->getName(), [ + 'addslashes', + 'addcslashes', 'strtoupper', 'strtolower', 'mb_strtoupper', From 7a20c57b7806bca007401bbdc0ebe2a68e436e4d Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 30 Jul 2021 19:04:19 +0200 Subject: [PATCH 2/4] Update non-empty-string.php --- tests/PHPStan/Analyser/data/non-empty-string.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/PHPStan/Analyser/data/non-empty-string.php b/tests/PHPStan/Analyser/data/non-empty-string.php index a233259c5a..6126971788 100644 --- a/tests/PHPStan/Analyser/data/non-empty-string.php +++ b/tests/PHPStan/Analyser/data/non-empty-string.php @@ -305,6 +305,11 @@ class MoreNonEmptyStringFunctions */ public function doFoo(string $s, string $nonEmpty, int $i) { + assertType('string', addslashes($s)); + assertType('non-empty-string', addslashes($nonEmpty)); + assertType('string', addcslashes($s)); + assertType('non-empty-string', addcslashes($nonEmpty)); + assertType('string', strtoupper($s)); assertType('non-empty-string', strtoupper($nonEmpty)); assertType('string', strtolower($s)); From 27debb6ee16c0efa4da9d7bde6ad46e44ef4d784 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 30 Jul 2021 19:11:49 +0200 Subject: [PATCH 3/4] Cover escapeshellarg and escapeshellcmd --- tests/PHPStan/Analyser/data/non-empty-string.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/PHPStan/Analyser/data/non-empty-string.php b/tests/PHPStan/Analyser/data/non-empty-string.php index 6126971788..457229c9ba 100644 --- a/tests/PHPStan/Analyser/data/non-empty-string.php +++ b/tests/PHPStan/Analyser/data/non-empty-string.php @@ -310,6 +310,11 @@ public function doFoo(string $s, string $nonEmpty, int $i) assertType('string', addcslashes($s)); assertType('non-empty-string', addcslashes($nonEmpty)); + assertType('string', escapeshellarg($s)); + assertType('non-empty-string', escapeshellarg($nonEmpty)); + assertType('string', escapeshellcmd($s)); + assertType('non-empty-string', escapeshellcmd($nonEmpty)); + assertType('string', strtoupper($s)); assertType('non-empty-string', strtoupper($nonEmpty)); assertType('string', strtolower($s)); From 4cc8b72de465dfd724b04ce0b60ffd870eb67574 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Fri, 30 Jul 2021 19:12:34 +0200 Subject: [PATCH 4/4] Update NonEmptyStringFunctionsReturnTypeExtension.php --- src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php index 67d0625075..f4afe77ea8 100644 --- a/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php +++ b/src/Type/Php/NonEmptyStringFunctionsReturnTypeExtension.php @@ -19,6 +19,8 @@ public function isFunctionSupported(FunctionReflection $functionReflection): boo return in_array($functionReflection->getName(), [ 'addslashes', 'addcslashes', + 'escapeshellarg', + 'escapeshellcmd', 'strtoupper', 'strtolower', 'mb_strtoupper',