Skip to content

Commit 6cd2a1a

Browse files
Merge branch '7.2' into 7.3
* 7.2: [DependencyInjection] Escape parameters before resolving env placeholders
2 parents 6730820 + fae0971 commit 6cd2a1a

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

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
}

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)%')

0 commit comments

Comments
 (0)