mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-19 08:38:45 +02:00
N°8017 - Security - dependabot - Symfony's VarDumper vulnerable to un… (#731)
Upgrade all Symfony components to last security fix (~6.4.0)
This commit is contained in:
@@ -122,6 +122,8 @@ use Symfony\Component\Mime\Header\Headers;
|
||||
use Symfony\Component\Mime\MimeTypeGuesserInterface;
|
||||
use Symfony\Component\Mime\MimeTypes;
|
||||
use Symfony\Component\Notifier\Bridge as NotifierBridge;
|
||||
use Symfony\Component\Notifier\Bridge\FakeChat\FakeChatTransportFactory;
|
||||
use Symfony\Component\Notifier\Bridge\FakeSms\FakeSmsTransportFactory;
|
||||
use Symfony\Component\Notifier\ChatterInterface;
|
||||
use Symfony\Component\Notifier\Notifier;
|
||||
use Symfony\Component\Notifier\Recipient\Recipient;
|
||||
@@ -349,7 +351,7 @@ class FrameworkExtension extends Extension
|
||||
throw new LogicException('AssetMapper support cannot be enabled as the AssetMapper component is not installed. Try running "composer require symfony/asset-mapper".');
|
||||
}
|
||||
|
||||
$this->registerAssetMapperConfiguration($config['asset_mapper'], $container, $loader, $this->readConfigEnabled('assets', $container, $config['assets']));
|
||||
$this->registerAssetMapperConfiguration($config['asset_mapper'], $container, $loader, $this->readConfigEnabled('assets', $container, $config['assets']), $this->readConfigEnabled('http_client', $container, $config['http_client']));
|
||||
} else {
|
||||
$container->removeDefinition('cache.asset_mapper');
|
||||
}
|
||||
@@ -733,7 +735,7 @@ class FrameworkExtension extends Extension
|
||||
$container->getDefinition('config_cache_factory')->setArguments([]);
|
||||
}
|
||||
|
||||
if (!$config['disallow_search_engine_index'] ?? false) {
|
||||
if (!$config['disallow_search_engine_index']) {
|
||||
$container->removeDefinition('disallow_search_engine_index_response_listener');
|
||||
}
|
||||
|
||||
@@ -1330,7 +1332,7 @@ class FrameworkExtension extends Extension
|
||||
}
|
||||
}
|
||||
|
||||
private function registerAssetMapperConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, bool $assetEnabled): void
|
||||
private function registerAssetMapperConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, bool $assetEnabled, bool $httpClientEnabled): void
|
||||
{
|
||||
$loader->load('asset_mapper.php');
|
||||
|
||||
@@ -1338,6 +1340,12 @@ class FrameworkExtension extends Extension
|
||||
$container->removeDefinition('asset_mapper.asset_package');
|
||||
}
|
||||
|
||||
if (!$httpClientEnabled) {
|
||||
$container->register('asset_mapper.http_client', HttpClientInterface::class)
|
||||
->addTag('container.error')
|
||||
->addError('You cannot use the AssetMapper integration since the HttpClient component is not enabled. Try enabling the "framework.http_client" config option.');
|
||||
}
|
||||
|
||||
$paths = $config['paths'];
|
||||
foreach ($container->getParameter('kernel.bundles_metadata') as $name => $bundle) {
|
||||
if ($container->fileExists($dir = $bundle['path'].'/Resources/public') || $container->fileExists($dir = $bundle['path'].'/public')) {
|
||||
@@ -1507,7 +1515,7 @@ class FrameworkExtension extends Extension
|
||||
$defaultDir = $container->getParameterBag()->resolveValue($config['default_path']);
|
||||
foreach ($container->getParameter('kernel.bundles_metadata') as $name => $bundle) {
|
||||
if ($container->fileExists($dir = $bundle['path'].'/Resources/translations') || $container->fileExists($dir = $bundle['path'].'/translations')) {
|
||||
$dirs[] = $dir;
|
||||
$dirs[] = $transPaths[] = $dir;
|
||||
} else {
|
||||
$nonExistingDirs[] = $dir;
|
||||
}
|
||||
@@ -1996,18 +2004,23 @@ class FrameworkExtension extends Extension
|
||||
$container->setParameter('serializer.default_context', $defaultContext);
|
||||
}
|
||||
|
||||
if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
|
||||
if ($container->hasDefinition('serializer.normalizer.object')) {
|
||||
$arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
|
||||
$context = ($arguments[6] ?? $defaultContext) + ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
|
||||
$container->getDefinition('serializer.normalizer.object')->setArgument(5, null);
|
||||
$context = $arguments[6] ?? $defaultContext;
|
||||
|
||||
if (isset($config['circular_reference_handler']) && $config['circular_reference_handler']) {
|
||||
$context += ['circular_reference_handler' => new Reference($config['circular_reference_handler'])];
|
||||
$container->getDefinition('serializer.normalizer.object')->setArgument(5, null);
|
||||
}
|
||||
|
||||
if ($config['max_depth_handler'] ?? false) {
|
||||
$context += ['max_depth_handler' => new Reference($config['max_depth_handler'])];
|
||||
}
|
||||
|
||||
$container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
|
||||
}
|
||||
|
||||
if ($config['max_depth_handler'] ?? false) {
|
||||
$arguments = $container->getDefinition('serializer.normalizer.object')->getArguments();
|
||||
$context = ($arguments[6] ?? $defaultContext) + ['max_depth_handler' => new Reference($config['max_depth_handler'])];
|
||||
$container->getDefinition('serializer.normalizer.object')->setArgument(6, $context);
|
||||
}
|
||||
$container->getDefinition('serializer.normalizer.property')->setArgument(5, $defaultContext);
|
||||
}
|
||||
|
||||
private function registerPropertyInfoConfiguration(ContainerBuilder $container, PhpFileLoader $loader): void
|
||||
@@ -2201,16 +2214,18 @@ class FrameworkExtension extends Extension
|
||||
$defaultMiddleware['after'][0]['arguments'] = [$bus['default_middleware']['allow_no_senders']];
|
||||
$defaultMiddleware['after'][1]['arguments'] = [$bus['default_middleware']['allow_no_handlers']];
|
||||
|
||||
// argument to add_bus_name_stamp_middleware
|
||||
$defaultMiddleware['before'][0]['arguments'] = [$busId];
|
||||
|
||||
$middleware = array_merge($defaultMiddleware['before'], $middleware, $defaultMiddleware['after']);
|
||||
}
|
||||
|
||||
foreach ($middleware as $middlewareItem) {
|
||||
foreach ($middleware as $key => $middlewareItem) {
|
||||
if (!$validationEnabled && \in_array($middlewareItem['id'], ['validation', 'messenger.middleware.validation'], true)) {
|
||||
throw new LogicException('The Validation middleware is only available when the Validator component is installed and enabled. Try running "composer require symfony/validator".');
|
||||
}
|
||||
|
||||
// argument to add_bus_name_stamp_middleware
|
||||
if ('add_bus_name_stamp_middleware' === $middlewareItem['id']) {
|
||||
$middleware[$key]['arguments'] = [$busId];
|
||||
}
|
||||
}
|
||||
|
||||
if ($container->getParameter('kernel.debug') && class_exists(Stopwatch::class)) {
|
||||
@@ -2267,14 +2282,17 @@ class FrameworkExtension extends Extension
|
||||
$transportRateLimiterReferences = [];
|
||||
foreach ($config['transports'] as $name => $transport) {
|
||||
$serializerId = $transport['serializer'] ?? 'messenger.default_serializer';
|
||||
$tags = [
|
||||
'alias' => $name,
|
||||
'is_failure_transport' => \in_array($name, $failureTransports),
|
||||
];
|
||||
if (str_starts_with($transport['dsn'], 'sync://')) {
|
||||
$tags['is_consumable'] = false;
|
||||
}
|
||||
$transportDefinition = (new Definition(TransportInterface::class))
|
||||
->setFactory([new Reference('messenger.transport_factory'), 'createTransport'])
|
||||
->setArguments([$transport['dsn'], $transport['options'] + ['transport_name' => $name], new Reference($serializerId)])
|
||||
->addTag('messenger.receiver', [
|
||||
'alias' => $name,
|
||||
'is_failure_transport' => \in_array($name, $failureTransports),
|
||||
]
|
||||
)
|
||||
->addTag('messenger.receiver', $tags)
|
||||
;
|
||||
$container->setDefinition($transportId = 'messenger.transport.'.$name, $transportDefinition);
|
||||
$senderAliases[$name] = $transportId;
|
||||
@@ -2553,11 +2571,13 @@ class FrameworkExtension extends Extension
|
||||
->setFactory([ScopingHttpClient::class, 'forBaseUri'])
|
||||
->setArguments([new Reference('http_client.transport'), $baseUri, $scopeConfig])
|
||||
->addTag('http_client.client')
|
||||
->addTag('kernel.reset', ['method' => 'reset', 'on_invalid' => 'ignore'])
|
||||
;
|
||||
} else {
|
||||
$container->register($name, ScopingHttpClient::class)
|
||||
->setArguments([new Reference('http_client.transport'), [$scope => $scopeConfig], $scope])
|
||||
->addTag('http_client.client')
|
||||
->addTag('kernel.reset', ['method' => 'reset', 'on_invalid' => 'ignore'])
|
||||
;
|
||||
}
|
||||
|
||||
@@ -2644,7 +2664,6 @@ class FrameworkExtension extends Extension
|
||||
}
|
||||
$transports = $config['dsn'] ? ['main' => $config['dsn']] : $config['transports'];
|
||||
$container->getDefinition('mailer.transports')->setArgument(0, $transports);
|
||||
$container->getDefinition('mailer.default_transport')->setArgument(0, current($transports));
|
||||
|
||||
$mailer = $container->getDefinition('mailer.mailer');
|
||||
if (false === $messageBus = $config['message_bus']) {
|
||||
@@ -2753,7 +2772,7 @@ class FrameworkExtension extends Extension
|
||||
$container->removeDefinition('notifier.channel.email');
|
||||
}
|
||||
|
||||
foreach (['texter', 'chatter', 'notifier.channel.chat', 'notifier.channel.email', 'notifier.channel.sms'] as $serviceId) {
|
||||
foreach (['texter', 'chatter', 'notifier.channel.chat', 'notifier.channel.email', 'notifier.channel.sms', 'notifier.channel.push'] as $serviceId) {
|
||||
if (!$container->hasDefinition($serviceId)) {
|
||||
continue;
|
||||
}
|
||||
@@ -2800,8 +2819,6 @@ class FrameworkExtension extends Extension
|
||||
NotifierBridge\Engagespot\EngagespotTransportFactory::class => 'notifier.transport_factory.engagespot',
|
||||
NotifierBridge\Esendex\EsendexTransportFactory::class => 'notifier.transport_factory.esendex',
|
||||
NotifierBridge\Expo\ExpoTransportFactory::class => 'notifier.transport_factory.expo',
|
||||
NotifierBridge\FakeChat\FakeChatTransportFactory::class => 'notifier.transport_factory.fake-chat',
|
||||
NotifierBridge\FakeSms\FakeSmsTransportFactory::class => 'notifier.transport_factory.fake-sms',
|
||||
NotifierBridge\Firebase\FirebaseTransportFactory::class => 'notifier.transport_factory.firebase',
|
||||
NotifierBridge\FortySixElks\FortySixElksTransportFactory::class => 'notifier.transport_factory.forty-six-elks',
|
||||
NotifierBridge\FreeMobile\FreeMobileTransportFactory::class => 'notifier.transport_factory.free-mobile',
|
||||
@@ -2820,7 +2837,7 @@ class FrameworkExtension extends Extension
|
||||
NotifierBridge\Mastodon\MastodonTransportFactory::class => 'notifier.transport_factory.mastodon',
|
||||
NotifierBridge\Mattermost\MattermostTransportFactory::class => 'notifier.transport_factory.mattermost',
|
||||
NotifierBridge\Mercure\MercureTransportFactory::class => 'notifier.transport_factory.mercure',
|
||||
NotifierBridge\MessageBird\MessageBirdTransport::class => 'notifier.transport_factory.message-bird',
|
||||
NotifierBridge\MessageBird\MessageBirdTransportFactory::class => 'notifier.transport_factory.message-bird',
|
||||
NotifierBridge\MessageMedia\MessageMediaTransportFactory::class => 'notifier.transport_factory.message-media',
|
||||
NotifierBridge\MicrosoftTeams\MicrosoftTeamsTransportFactory::class => 'notifier.transport_factory.microsoft-teams',
|
||||
NotifierBridge\Mobyt\MobytTransportFactory::class => 'notifier.transport_factory.mobyt',
|
||||
@@ -2851,7 +2868,7 @@ class FrameworkExtension extends Extension
|
||||
NotifierBridge\Telegram\TelegramTransportFactory::class => 'notifier.transport_factory.telegram',
|
||||
NotifierBridge\Telnyx\TelnyxTransportFactory::class => 'notifier.transport_factory.telnyx',
|
||||
NotifierBridge\Termii\TermiiTransportFactory::class => 'notifier.transport_factory.termii',
|
||||
NotifierBridge\TurboSms\TurboSmsTransport::class => 'notifier.transport_factory.turbo-sms',
|
||||
NotifierBridge\TurboSms\TurboSmsTransportFactory::class => 'notifier.transport_factory.turbo-sms',
|
||||
NotifierBridge\Twilio\TwilioTransportFactory::class => 'notifier.transport_factory.twilio',
|
||||
NotifierBridge\Twitter\TwitterTransportFactory::class => 'notifier.transport_factory.twitter',
|
||||
NotifierBridge\Vonage\VonageTransportFactory::class => 'notifier.transport_factory.vonage',
|
||||
@@ -2872,27 +2889,33 @@ class FrameworkExtension extends Extension
|
||||
|
||||
if (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', NotifierBridge\Mercure\MercureTransportFactory::class, $parentPackages) && ContainerBuilder::willBeAvailable('symfony/mercure-bundle', MercureBundle::class, $parentPackages) && \in_array(MercureBundle::class, $container->getParameter('kernel.bundles'), true)) {
|
||||
$container->getDefinition($classToServices[NotifierBridge\Mercure\MercureTransportFactory::class])
|
||||
->replaceArgument('$registry', new Reference(HubRegistry::class))
|
||||
->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
|
||||
->replaceArgument(0, new Reference(HubRegistry::class))
|
||||
->replaceArgument(1, new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->addArgument(new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
|
||||
} elseif (ContainerBuilder::willBeAvailable('symfony/mercure-notifier', NotifierBridge\Mercure\MercureTransportFactory::class, $parentPackages)) {
|
||||
$container->removeDefinition($classToServices[NotifierBridge\Mercure\MercureTransportFactory::class]);
|
||||
}
|
||||
|
||||
if (ContainerBuilder::willBeAvailable('symfony/fake-chat-notifier', NotifierBridge\FakeChat\FakeChatTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'])) {
|
||||
$container->getDefinition($classToServices[NotifierBridge\FakeChat\FakeChatTransportFactory::class])
|
||||
->replaceArgument('$mailer', new Reference('mailer'))
|
||||
->replaceArgument('$logger', new Reference('logger'))
|
||||
->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
|
||||
// don't use ContainerBuilder::willBeAvailable() as these are not needed in production
|
||||
if (class_exists(FakeChatTransportFactory::class)) {
|
||||
$container->getDefinition('notifier.transport_factory.fake-chat')
|
||||
->replaceArgument(0, new Reference('mailer', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->replaceArgument(1, new Reference('logger', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->addArgument(new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->addArgument(new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
|
||||
} else {
|
||||
$container->removeDefinition('notifier.transport_factory.fake-chat');
|
||||
}
|
||||
|
||||
if (ContainerBuilder::willBeAvailable('symfony/fake-sms-notifier', NotifierBridge\FakeSms\FakeSmsTransportFactory::class, ['symfony/framework-bundle', 'symfony/notifier', 'symfony/mailer'])) {
|
||||
$container->getDefinition($classToServices[NotifierBridge\FakeSms\FakeSmsTransportFactory::class])
|
||||
->replaceArgument('$mailer', new Reference('mailer'))
|
||||
->replaceArgument('$logger', new Reference('logger'))
|
||||
->replaceArgument('$client', new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->replaceArgument('$dispatcher', new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
|
||||
// don't use ContainerBuilder::willBeAvailable() as these are not needed in production
|
||||
if (class_exists(FakeSmsTransportFactory::class)) {
|
||||
$container->getDefinition('notifier.transport_factory.fake-sms')
|
||||
->replaceArgument(0, new Reference('mailer', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->replaceArgument(1, new Reference('logger', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->addArgument(new Reference('event_dispatcher', ContainerBuilder::NULL_ON_INVALID_REFERENCE))
|
||||
->addArgument(new Reference('http_client', ContainerBuilder::NULL_ON_INVALID_REFERENCE));
|
||||
} else {
|
||||
$container->removeDefinition('notifier.transport_factory.fake-sms');
|
||||
}
|
||||
|
||||
if (isset($config['admin_recipients'])) {
|
||||
|
||||
Reference in New Issue
Block a user