From e8ef9eaa26e680c913ced516b1199817d7540e67 Mon Sep 17 00:00:00 2001 From: Michael Kliewe Date: Sat, 1 Feb 2020 23:16:04 +0100 Subject: [PATCH] Added 2 tests for attachment name handing in parser/parts/file_parser.php - very long filename with > 255 characters (exceeding limit of filesystem) - unsafe character, in this case a horizontal tab (which at least on Windows is a problem) --- ...hment_only_horizontal_tab_in_filename.mail | 55 +++++++++++++++++++ .../attachment_with_long_filename.mail | 55 +++++++++++++++++++ tests/parser/parser_test.php | 20 +++++++ 3 files changed, 130 insertions(+) create mode 100644 tests/parser/data/various/attachment_only_horizontal_tab_in_filename.mail create mode 100644 tests/parser/data/various/attachment_with_long_filename.mail diff --git a/tests/parser/data/various/attachment_only_horizontal_tab_in_filename.mail b/tests/parser/data/various/attachment_only_horizontal_tab_in_filename.mail new file mode 100644 index 00000000..bf77ce75 --- /dev/null +++ b/tests/parser/data/various/attachment_only_horizontal_tab_in_filename.mail @@ -0,0 +1,55 @@ +Return-Path: +X-Original-To: as@ez.no +Delivered-To: as@mail.ez.no +Received: from smtp.ez.no (blackboy.ez.no [194.248.150.22]) + by mta1.ez.no (Postfix) with ESMTP id 99508362508 + for ; Fri, 23 Nov 2007 13:29:23 +0100 (CET) +Received: from [10.0.2.184] (popeye.ez.no [85.19.74.66]) + by smtp.ez.no (Postfix) with ESMTP id D611AAB54C + for ; Fri, 23 Nov 2007 13:26:40 +0100 (CET) +Message-ID: <4746C7D6.5010203@ez.no> +Date: Fri, 23 Nov 2007 13:30:14 +0100 +From: Alexandru Stanoi +User-Agent: Thunderbird 1.5.0.12 (X11/20070604) +MIME-Version: 1.0 +To: Alexandru Stanoi +Subject: TEST: HTML attachment +Content-Type: multipart/mixed; + boundary="1234567890" + + +--1234567890 +Content-Type: text/html; charset=iso-8859-1 +Content-Transfer-Encoding: 7bit + + + +
+cam_data/photo067.jpg

+
+ + +--1234567890 +Content-Type: image/jpeg; name="" +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: attachment; filename=" " + +/9j/4AAQSkZJRgABAgEAkACQAAD/ +2wCEAAwICQoJBwwKCQoNDAwOER0TERAQESQZGxUdKiUsLCkl +KSgvNEM5LzE/ +MigpOk87P0VHS0xLLThSWFFJV0NJS0gBDA0NEQ8RIhMTIkgwKTBISEhISEhISEhI +SEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISP/ +AABEIAPABQAMBIQACEQED +EQH/3QAEABT/ +xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAAB +fQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5 +OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo +qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/ +j5+gEAAwEBAQEB +AQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIy +gQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNk +ZWZnaG + +--1234567890-- diff --git a/tests/parser/data/various/attachment_with_long_filename.mail b/tests/parser/data/various/attachment_with_long_filename.mail new file mode 100644 index 00000000..ad623893 --- /dev/null +++ b/tests/parser/data/various/attachment_with_long_filename.mail @@ -0,0 +1,55 @@ +Return-Path: +X-Original-To: as@ez.no +Delivered-To: as@mail.ez.no +Received: from smtp.ez.no (blackboy.ez.no [194.248.150.22]) + by mta1.ez.no (Postfix) with ESMTP id 99508362508 + for ; Fri, 23 Nov 2007 13:29:23 +0100 (CET) +Received: from [10.0.2.184] (popeye.ez.no [85.19.74.66]) + by smtp.ez.no (Postfix) with ESMTP id D611AAB54C + for ; Fri, 23 Nov 2007 13:26:40 +0100 (CET) +Message-ID: <4746C7D6.5010203@ez.no> +Date: Fri, 23 Nov 2007 13:30:14 +0100 +From: Alexandru Stanoi +User-Agent: Thunderbird 1.5.0.12 (X11/20070604) +MIME-Version: 1.0 +To: Alexandru Stanoi +Subject: TEST: HTML attachment +Content-Type: multipart/mixed; + boundary="1234567890" + + +--1234567890 +Content-Type: text/html; charset=iso-8859-1 +Content-Transfer-Encoding: 7bit + + + +
+cam_data/photo067.jpg

+
+ + +--1234567890 +Content-Type: image/jpeg; name="" +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: attachment; filename="SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_SOMETHINGVERYLONG_.jpg" + +/9j/4AAQSkZJRgABAgEAkACQAAD/ +2wCEAAwICQoJBwwKCQoNDAwOER0TERAQESQZGxUdKiUsLCkl +KSgvNEM5LzE/ +MigpOk87P0VHS0xLLThSWFFJV0NJS0gBDA0NEQ8RIhMTIkgwKTBISEhISEhISEhI +SEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISP/ +AABEIAPABQAMBIQACEQED +EQH/3QAEABT/ +xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAAB +fQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5 +OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo +qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/ +j5+gEAAwEBAQEB +AQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIy +gQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNk +ZWZnaG + +--1234567890-- diff --git a/tests/parser/parser_test.php b/tests/parser/parser_test.php index 744306ed..24b08897 100644 --- a/tests/parser/parser_test.php +++ b/tests/parser/parser_test.php @@ -903,6 +903,26 @@ public function testVarious11() $parts[1]->contentDisposition->fileName, "Fails until I figure out what the RFC means." ); } + public function testVarious12() + { + $parser = new ezcMailParser(); + $set = new SingleFileSet( 'various/attachment_with_long_filename.mail' ); + $mail = $parser->parseMail( $set ); + $this->assertEquals( 1, count( $mail ) ); + $parts = $mail[0]->body->getParts(); + $this->assertEquals( true, $parts[1] instanceof ezcMailFile ); + } + + public function testVarious13() + { + $parser = new ezcMailParser(); + $set = new SingleFileSet( 'various/attachment_only_horizontal_tab_in_filename.mail' ); + $mail = $parser->parseMail( $set ); + $this->assertEquals( 1, count( $mail ) ); + $parts = $mail[0]->body->getParts(); + $this->assertEquals( true, $parts[1] instanceof ezcMailFile ); + } + public function testExtendedMailClass() { $parser = new ezcMailParser();