From 8542866dde79f37cde9bc79a260b649f58e3b7f0 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Tue, 10 Feb 2015 16:07:19 +0100 Subject: [PATCH] fixed possible race condition when creating a directory --- .../FrameworkBundle/DependencyInjection/FrameworkExtension.php | 2 +- src/Symfony/Component/HttpFoundation/File/File.php | 2 +- src/Symfony/Component/HttpKernel/Kernel.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index 50c3f72fa7..56220995dc 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -666,7 +666,7 @@ class FrameworkExtension extends Extension if ('file' === $config['cache']) { $cacheDir = $container->getParameterBag()->resolveValue($config['file_cache_dir']); - if (!is_dir($cacheDir) && false === @mkdir($cacheDir, 0777, true)) { + if (!is_dir($cacheDir) && false === @mkdir($cacheDir, 0777, true) && !is_dir($cacheDir)) { throw new \RuntimeException(sprintf('Could not create cache directory "%s".', $cacheDir)); } diff --git a/src/Symfony/Component/HttpFoundation/File/File.php b/src/Symfony/Component/HttpFoundation/File/File.php index 0b637d1a3e..dc0e2f7656 100644 --- a/src/Symfony/Component/HttpFoundation/File/File.php +++ b/src/Symfony/Component/HttpFoundation/File/File.php @@ -130,7 +130,7 @@ class File extends \SplFileInfo protected function getTargetFile($directory, $name = null) { if (!is_dir($directory)) { - if (false === @mkdir($directory, 0777, true)) { + if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) { throw new FileException(sprintf('Unable to create the "%s" directory', $directory)); } } elseif (!is_writable($directory)) { diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index c6b7ee1142..7116a81d9f 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -605,7 +605,7 @@ abstract class Kernel implements KernelInterface, TerminableInterface { foreach (array('cache' => $this->getCacheDir(), 'logs' => $this->getLogDir()) as $name => $dir) { if (!is_dir($dir)) { - if (false === @mkdir($dir, 0777, true)) { + if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) { throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir)); } } elseif (!is_writable($dir)) {