From 07da83776a25cfec231583ed2705416a4714e661 Mon Sep 17 00:00:00 2001 From: Matias Barletta Date: Sat, 5 Jan 2019 08:44:50 -0300 Subject: [PATCH] fix: Validate file name length (#463) * fix: Validate file name length $message could contain a large email text that if sent to is_file it could break with this error: ` is_file(): File name is longer than the maximum allowed path ` This validation prevents using is_file if the $message is longer than the allowed path. * style: Fix extra space * Added a small test * cs * cs --- src/Mailgun/Api/Message.php | 2 +- tests/Api/MessageTest.php | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Mailgun/Api/Message.php b/src/Mailgun/Api/Message.php index 0114d65..201ecb7 100644 --- a/src/Mailgun/Api/Message.php +++ b/src/Mailgun/Api/Message.php @@ -82,7 +82,7 @@ class Message extends HttpApi $params['to'] = $recipients; $postDataMultipart = $this->prepareMultipartParameters($params); - if (is_file($message)) { + if (strlen($message) < PHP_MAXPATHLEN && is_file($message)) { $fileData = ['filePath' => $message]; } else { $fileData = [ diff --git a/tests/Api/MessageTest.php b/tests/Api/MessageTest.php index d42485f..bcb64fb 100644 --- a/tests/Api/MessageTest.php +++ b/tests/Api/MessageTest.php @@ -111,6 +111,17 @@ class MessageTest extends TestCase $api->show('url', true); } + public function testSendMimeWithLongMessage() + { + $api = $this->getApiMock(); + $api->expects($this->once()) + ->method('httpPostRaw') + ->willReturn(new Response()); + + $message = str_repeat('a', PHP_MAXPATHLEN).' and some more'; + $api->sendMime('foo', ['mailbox@myapp.com'], $message, []); + } + /** * {@inheritdoc} */