Skip to content

Commit d0838f8

Browse files
Merge branch '6.4' into 7.2
* 6.4: [DependencyInjection] Escape parameters before resolving env placeholders
2 parents ce18649 + e24578a commit d0838f8

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

src/Symfony/Component/DependencyInjection/ContainerBuilder.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,7 @@ public function compile(bool $resolveEnvPlaceholders = false): void
824824

825825
if ($bag instanceof EnvPlaceholderParameterBag) {
826826
if ($resolveEnvPlaceholders) {
827-
$this->parameterBag = new ParameterBag($this->resolveEnvPlaceholders($bag->all(), true));
827+
$this->parameterBag = new ParameterBag($this->resolveEnvPlaceholders($this->escapeParameters($bag->all()), true));
828828
}
829829

830830
$this->envPlaceholders = $bag->getEnvPlaceholders();
@@ -1777,4 +1777,18 @@ private function inVendors(string $path): bool
17771777

17781778
return $this->pathsInVendor[$path] = false;
17791779
}
1780+
1781+
private function escapeParameters(array $parameters): array
1782+
{
1783+
$params = [];
1784+
foreach ($parameters as $k => $v) {
1785+
$params[$k] = match (true) {
1786+
\is_array($v) => $this->escapeParameters($v),
1787+
\is_string($v) => str_replace('%', '%%', $v),
1788+
default => $v,
1789+
};
1790+
}
1791+
1792+
return $params;
1793+
}
17801794
}

src/Symfony/Component/DependencyInjection/Tests/ContainerBuilderTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,7 @@ public function testCompileWithResolveEnv()
892892
$container->setParameter('bar', '%% %env(DUMMY_ENV_VAR)% %env(DUMMY_SERVER_VAR)% %env(HTTP_DUMMY_VAR)%');
893893
$container->setParameter('foo', '%env(FOO)%');
894894
$container->setParameter('baz', '%foo%');
895+
$container->setParameter('qux', '%%quux%%');
895896
$container->setParameter('env(HTTP_DUMMY_VAR)', '123');
896897
$container->register('teatime', 'stdClass')
897898
->setProperty('foo', '%env(DUMMY_ENV_VAR)%')

src/Symfony/Component/Translation/Tests/TranslatorCacheTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ protected function deleteTmpDir()
4646
continue;
4747
}
4848
if ($path->isDir()) {
49-
rmdir($path->__toString());
49+
@rmdir($path->__toString());
5050
} else {
51-
unlink($path->__toString());
51+
@unlink($path->__toString());
5252
}
5353
}
5454
rmdir($this->tmpDir);

0 commit comments

Comments
 (0)