From 9ce0ae23aee0cc32bbedb0436a47f267900017c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Paris?= Date: Tue, 7 Nov 2017 21:11:22 +0100 Subject: [PATCH] Have weak_vendors ignore deprecations from outside phar:// and eval() can execute code that may or may not come from the vendors. --- .../PhpUnit/DeprecationErrorHandler.php | 7 +++-- .../DeprecationErrorHandler/deprecation.phar | Bin 0 -> 6828 bytes .../deprecation/deprecation.php | 3 +++ .../DeprecationErrorHandler/generate_phar.php | 4 +++ .../weak_vendors_on_eval_d_deprecation.phpt | 23 ++++++++++++++++ .../weak_vendors_on_phar_deprecation.phpt | 25 ++++++++++++++++++ 6 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation.phar create mode 100644 src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation/deprecation.php create mode 100644 src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/generate_phar.php create mode 100644 src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_eval_d_deprecation.phpt create mode 100644 src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_phar_deprecation.phpt diff --git a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php index d13fc14c0c6bb..3fde9ab28b100 100644 --- a/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php +++ b/src/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php @@ -75,9 +75,12 @@ public static function register($mode = 0) } } } - $path = realpath($path) ?: $path; + $realPath = realpath($path); + if (false === $realPath && '-' !== $path && 'Standard input code' !== $path) { + return true; + } foreach ($vendors as $vendor) { - if (0 === strpos($path, $vendor) && false !== strpbrk(substr($path, strlen($vendor), 1), '/'.DIRECTORY_SEPARATOR)) { + if (0 === strpos($realPath, $vendor) && false !== strpbrk(substr($realPath, strlen($vendor), 1), '/'.DIRECTORY_SEPARATOR)) { return true; } } diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation.phar b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation.phar new file mode 100644 index 0000000000000000000000000000000000000000..20e1203bd058af00544b7ea3159cc4979546afd0 GIT binary patch literal 6828 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 literal 0 HcmV?d00001 diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation/deprecation.php b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation/deprecation.php new file mode 100644 index 0000000000000..b9e23e7692156 --- /dev/null +++ b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/deprecation/deprecation.php @@ -0,0 +1,3 @@ +buildFromDirectory(__DIR__.DIRECTORY_SEPARATOR.'deprecation'); diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_eval_d_deprecation.phpt b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_eval_d_deprecation.phpt new file mode 100644 index 0000000000000..6bba1c86be5ac --- /dev/null +++ b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_eval_d_deprecation.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test DeprecationErrorHandler in weak vendors mode on eval()'d deprecation +--FILE-- + +--EXPECTF-- + +Other deprecation notices (1) diff --git a/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_phar_deprecation.phpt b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_phar_deprecation.phpt new file mode 100644 index 0000000000000..4c4879e61156d --- /dev/null +++ b/src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/weak_vendors_on_phar_deprecation.phpt @@ -0,0 +1,25 @@ +--TEST-- +Test DeprecationErrorHandler in weak vendors mode on eval()'d deprecation +The phar can be regenerated by running php src/Symfony/Bridge/PhpUnit/Tests/DeprecationErrorHandler/generate_phar.php +--FILE-- + +--EXPECTF-- + +Other deprecation notices (1)