Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[Messenger] Remove base64_encode & use addslashes #30957

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1143,20 +1143,25 @@ function ($a) {
->end()
->end()
->end()
->scalarNode('default_serializer')
->defaultValue('messenger.transport.native_php_serializer')
->info('Service id to use as the default serializer for the transports.')
->end()
->arrayNode('symfony_serializer')
->arrayNode('serializer')
->addDefaultsIfNotSet()
->children()
->scalarNode('format')->defaultValue('json')->info('Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')->end()
->arrayNode('context')
->normalizeKeys(false)
->useAttributeAsKey('name')
->defaultValue([])
->info('Context array for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')
->prototype('variable')->end()
->scalarNode('default_serializer')
->defaultValue('messenger.transport.native_php_serializer')
->info('Service id to use as the default serializer for the transports.')
->end()
->arrayNode('symfony_serializer')
->addDefaultsIfNotSet()
->children()
->scalarNode('format')->defaultValue('json')->info('Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')->end()
->arrayNode('context')
->normalizeKeys(false)
->useAttributeAsKey('name')
->defaultValue([])
->info('Context array for the messenger.transport.symfony_serializer service (which is not the serializer used by default).')
->prototype('variable')->end()
->end()
->end()
->end()
->end()
->end()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1692,9 +1692,9 @@ private function registerMessengerConfiguration(array $config, ContainerBuilder
$container->removeDefinition('messenger.transport.amqp.factory');
} else {
$container->getDefinition('messenger.transport.symfony_serializer')
->replaceArgument(1, $config['symfony_serializer']['format'])
->replaceArgument(2, $config['symfony_serializer']['context']);
$container->setAlias('messenger.default_serializer', $config['default_serializer']);
->replaceArgument(1, $config['serializer']['symfony_serializer']['format'])
->replaceArgument(2, $config['serializer']['symfony_serializer']['context']);
$container->setAlias('messenger.default_serializer', $config['serializer']['default_serializer']);
}

$senderAliases = [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -407,17 +407,21 @@

<xsd:complexType name="messenger">
<xsd:sequence>
<xsd:element name="default-serializer" type="xsd:string" minOccurs="0" />
<xsd:element name="symfony-serializer" type="messenger_symfony_serializer" minOccurs="0" />
<xsd:element name="encoder" type="xsd:string" minOccurs="0" />
<xsd:element name="decoder" type="xsd:string" minOccurs="0" />
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are the encoder and decoder gone ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't find them referenced anywhere - there is no encoder or decoder in the Configuration class. I think these were incorrectly not removed from some earlier change to messenger.

<xsd:element name="serializer" type="messenger_serializer" minOccurs="0" />
<xsd:element name="routing" type="messenger_routing" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="transport" type="messenger_transport" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="bus" type="messenger_bus" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="default-bus" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="messenger_serializer">
<xsd:sequence>
<xsd:element name="symfony-serializer" type="messenger_symfony_serializer" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="default-serializer" type="xsd:string" />
</xsd:complexType>

<xsd:complexType name="messenger_symfony_serializer">
<xsd:sequence>
<xsd:element name="context" type="metadata" minOccurs="0" maxOccurs="unbounded" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,10 +328,12 @@ class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported() ? 'semaphor
'enabled' => !class_exists(FullStack::class) && interface_exists(MessageBusInterface::class),
'routing' => [],
'transports' => [],
'default_serializer' => 'messenger.transport.native_php_serializer',
'symfony_serializer' => [
'format' => 'json',
'context' => [],
'serializer' => [
'default_serializer' => 'messenger.transport.native_php_serializer',
'symfony_serializer' => [
'format' => 'json',
'context' => [],
],
],
'default_bus' => null,
'buses' => ['messenger.bus.default' => ['default_middleware' => true, 'middleware' => []]],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

$container->loadFromExtension('framework', [
'messenger' => [
'default_serializer' => false,
'routing' => [
FooMessage::class => ['sender.bar', 'sender.biz'],
BarMessage::class => 'sender.foo',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
$container->loadFromExtension('framework', [
'serializer' => true,
'messenger' => [
'default_serializer' => 'messenger.transport.symfony_serializer',
'serializer' => [
'default_serializer' => 'messenger.transport.symfony_serializer',
],
'routing' => [
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage' => ['amqp', 'audit'],
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage' => [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
$container->loadFromExtension('framework', [
'serializer' => true,
'messenger' => [
'default_serializer' => 'messenger.transport.symfony_serializer',
'symfony_serializer' => [
'format' => 'csv',
'context' => ['enable_max_depth' => true],
'serializer' => [
'default_serializer' => 'messenger.transport.symfony_serializer',
'symfony_serializer' => [
'format' => 'csv',
'context' => ['enable_max_depth' => true],
],
],
'transports' => [
'default' => 'amqp://localhost/%2f/messages',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
$container->loadFromExtension('framework', [
'serializer' => true,
'messenger' => [
'default_serializer' => 'messenger.transport.symfony_serializer',
'serializer' => [
'default_serializer' => 'messenger.transport.symfony_serializer',
],
'transports' => [
'default' => 'amqp://localhost/%2f/messages',
'customised' => [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<framework:config>
<framework:serializer enabled="true" />
<framework:messenger>
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
<framework:serializer default-serializer="messenger.transport.symfony_serializer" />
<framework:routing message-class="Symfony\Component\Messenger\Tests\Fixtures\DummyMessage">
<framework:sender service="amqp" />
<framework:sender service="audit" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@
<framework:config>
<framework:serializer enabled="true" />
<framework:messenger>
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
<framework:symfony-serializer format="csv">
<framework:context>
<framework:enable_max_depth>true</framework:enable_max_depth>
</framework:context>
</framework:symfony-serializer>
<framework:serializer default-serializer="messenger.transport.symfony_serializer">
<framework:symfony-serializer format="csv">
<framework:context>
<framework:enable_max_depth>true</framework:enable_max_depth>
</framework:context>
</framework:symfony-serializer>
</framework:serializer>
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
</framework:messenger>
</framework:config>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<framework:config>
<framework:serializer enabled="true" />
<framework:messenger>
<framework:default-serializer>messenger.transport.symfony_serializer</framework:default-serializer>
<framework:serializer default-serializer="messenger.transport.symfony_serializer" />
<framework:transport name="default" dsn="amqp://localhost/%2f/messages" />
<framework:transport name="customised" dsn="amqp://localhost/%2f/messages?exchange_name=exchange_name" serializer="messenger.transport.native_php_serializer">
<framework:options>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
framework:
messenger:
default_serializer: false
routing:
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\FooMessage': ['sender.bar', 'sender.biz']
'Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Messenger\BarMessage': 'sender.foo'
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
framework:
serializer: true
messenger:
default_serializer: messenger.transport.symfony_serializer
serializer:
default_serializer: messenger.transport.symfony_serializer
routing:
'Symfony\Component\Messenger\Tests\Fixtures\DummyMessage': [amqp, audit]
'Symfony\Component\Messenger\Tests\Fixtures\SecondMessage':
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
framework:
serializer: true
messenger:
default_serializer: messenger.transport.symfony_serializer
symfony_serializer:
format: csv
context:
enable_max_depth: true
serializer:
default_serializer: messenger.transport.symfony_serializer
symfony_serializer:
format: csv
context:
enable_max_depth: true
transports:
default: 'amqp://localhost/%2f/messages'
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
framework:
serializer: true
messenger:
default_serializer: messenger.transport.symfony_serializer
serializer:
default_serializer: messenger.transport.symfony_serializer
transports:
default: 'amqp://localhost/%2f/messages'
customised:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ public function testEncodedIsDecodable()

$envelope = new Envelope(new DummyMessage('Hello'));

$this->assertEquals($envelope, $serializer->decode($serializer->encode($envelope)));
$encoded = $serializer->encode($envelope);
$this->assertNotContains("\0", $encoded['body'], 'Does not contain the binary characters');
$this->assertEquals($envelope, $serializer->decode($encoded));
}

public function testDecodingFailsWithMissingBodyKey()
Expand Down Expand Up @@ -58,7 +60,7 @@ public function testDecodingFailsWithBadClass()
$serializer = new PhpSerializer();

$serializer->decode([
'body' => base64_encode('O:13:"ReceivedSt0mp":0:{}'),
'body' => 'O:13:"ReceivedSt0mp":0:{}',
]);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,7 @@ public function decode(array $encodedEnvelope): Envelope
throw new MessageDecodingFailedException('Encoded envelope should have at least a "body".');
}

$serializeEnvelope = base64_decode($encodedEnvelope['body']);

if (false === $serializeEnvelope) {
throw new MessageDecodingFailedException('The "body" key could not be base64 decoded.');
}
$serializeEnvelope = stripslashes($encodedEnvelope['body']);

return $this->safelyUnserialize($serializeEnvelope);
}
Expand All @@ -44,8 +40,10 @@ public function decode(array $encodedEnvelope): Envelope
*/
public function encode(Envelope $envelope): array
{
$body = addslashes(serialize($envelope));

return [
'body' => base64_encode(serialize($envelope)),
'body' => $body,
];
}

Expand Down
Morty Proxy This is a proxified and sanitized view of the page, visit original site.