From fe7ad812c7b385207cee0742361ab24304e367cc Mon Sep 17 00:00:00 2001 From: Ryan Weaver Date: Mon, 1 Apr 2019 08:36:54 -0400 Subject: [PATCH] base64_encoding inside PhpSerializer to avoid null characters --- .../Transport/Serialization/PhpSerializerTest.php | 2 +- .../Transport/Serialization/PhpSerializer.php | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php b/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php index 1532db5872..53905a053d 100644 --- a/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php +++ b/src/Symfony/Component/Messenger/Tests/Transport/Serialization/PhpSerializerTest.php @@ -58,7 +58,7 @@ class PhpSerializerTest extends TestCase $serializer = new PhpSerializer(); $serializer->decode([ - 'body' => 'O:13:"ReceivedSt0mp":0:{}', + 'body' => base64_encode('O:13:"ReceivedSt0mp":0:{}'), ]); } } diff --git a/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php b/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php index f9aed0e0d2..6a27529c55 100644 --- a/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php +++ b/src/Symfony/Component/Messenger/Transport/Serialization/PhpSerializer.php @@ -30,7 +30,13 @@ class PhpSerializer implements SerializerInterface throw new MessageDecodingFailedException('Encoded envelope should have at least a "body".'); } - return $this->safelyUnserialize($encodedEnvelope['body']); + $serializeEnvelope = base64_decode($encodedEnvelope['body']); + + if (false === $serializeEnvelope) { + throw new MessageDecodingFailedException('The "body" key could not be base64 decoded.'); + } + + return $this->safelyUnserialize($serializeEnvelope); } /** @@ -39,7 +45,7 @@ class PhpSerializer implements SerializerInterface public function encode(Envelope $envelope): array { return [ - 'body' => serialize($envelope), + 'body' => base64_encode(serialize($envelope)), ]; }