Skip to content

Commit a691c45

Browse files
Merge branch '7.2' into 7.3
* 7.2: [DependencyInjection] Escape parameters before resolving env placeholders
2 parents 1b295a2 + d0838f8 commit a691c45

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
@@ -823,7 +823,7 @@ public function compile(bool $resolveEnvPlaceholders = false): void
823823

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

829829
$this->envPlaceholders = $bag->getEnvPlaceholders();
@@ -1829,4 +1829,18 @@ private function inVendors(string $path): bool
18291829

18301830
return $this->pathsInVendor[$path] = false;
18311831
}
1832+
1833+
private function escapeParameters(array $parameters): array
1834+
{
1835+
$params = [];
1836+
foreach ($parameters as $k => $v) {
1837+
$params[$k] = match (true) {
1838+
\is_array($v) => $this->escapeParameters($v),
1839+
\is_string($v) => str_replace('%', '%%', $v),
1840+
default => $v,
1841+
};
1842+
}
1843+
1844+
return $params;
1845+
}
18321846
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,6 +924,7 @@ public function testCompileWithResolveEnv()
924924
$container->setParameter('bar', '%% %env(DUMMY_ENV_VAR)% %env(DUMMY_SERVER_VAR)% %env(HTTP_DUMMY_VAR)%');
925925
$container->setParameter('foo', '%env(FOO)%');
926926
$container->setParameter('baz', '%foo%');
927+
$container->setParameter('qux', '%%quux%%');
927928
$container->setParameter('env(HTTP_DUMMY_VAR)', '123');
928929
$container->register('teatime', 'stdClass')
929930
->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)