diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md index c9477b8848..461d52abd1 100644 --- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md @@ -14,6 +14,7 @@ CHANGELOG * added ability to define a static priority method for tagged service * added support for improved syntax to define method calls in Yaml * added `LazyString` for lazy computation of string values injected into services + * made the `%env(base64:...)%` processor able to decode base64url 4.3.0 ----- diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index 9231cf48c5..aef13a9ad1 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -173,7 +173,7 @@ class EnvVarProcessor implements EnvVarProcessorInterface } if ('base64' === $prefix) { - return base64_decode($env); + return base64_decode(strtr($env, '-_', '+/')); } if ('json' === $prefix) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php index c960c2f1ad..12d852f453 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php @@ -231,6 +231,12 @@ class EnvVarProcessorTest extends TestCase }); $this->assertSame('hello', $result); + + $result = $processor->getEnv('base64', 'foo', function ($name) { return '/+0='; }); + $this->assertSame("\xFF\xED", $result); + + $result = $processor->getEnv('base64', 'foo', function ($name) { return '_-0='; }); + $this->assertSame("\xFF\xED", $result); } public function testGetEnvTrim()