From 5e3ccc28143eca0ae31897379ba54a6816049c0d Mon Sep 17 00:00:00 2001 From: Sebastiaan Date: Thu, 16 Apr 2020 13:29:30 +0200 Subject: [PATCH] [Mime] Ensure proper line-ending for SMIME --- src/Symfony/Component/Mime/Crypto/SMime.php | 2 +- .../Component/Mime/Tests/Crypto/SMimeEncryptorTest.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Mime/Crypto/SMime.php b/src/Symfony/Component/Mime/Crypto/SMime.php index c6317a6bb1..ad88c1987a 100644 --- a/src/Symfony/Component/Mime/Crypto/SMime.php +++ b/src/Symfony/Component/Mime/Crypto/SMime.php @@ -65,7 +65,7 @@ abstract class SMime protected function getStreamIterator($stream): iterable { while (!feof($stream)) { - yield fread($stream, 16372); + yield str_replace("\n", "\r\n", str_replace("\r\n", "\n", fread($stream, 16372))); } } diff --git a/src/Symfony/Component/Mime/Tests/Crypto/SMimeEncryptorTest.php b/src/Symfony/Component/Mime/Tests/Crypto/SMimeEncryptorTest.php index cad87bfab7..92df05e391 100644 --- a/src/Symfony/Component/Mime/Tests/Crypto/SMimeEncryptorTest.php +++ b/src/Symfony/Component/Mime/Tests/Crypto/SMimeEncryptorTest.php @@ -87,7 +87,11 @@ class SMimeEncryptorTest extends SMimeTestCase private function assertMessageIsEncryptedProperly(Message $message, Message $originalMessage): void { $messageFile = $this->generateTmpFilename(); - file_put_contents($messageFile, $message->toString()); + file_put_contents($messageFile, $messageString = $message->toString()); + + // Ensure the proper line-ending is used for compatibility with the RFC + $this->assertStringContainsString("\n\r", $messageString); + $this->assertStringNotContainsString("\n\n", $messageString); $outputFile = $this->generateTmpFilename();