From b1a660ef5e1b23711d34fdf1766663cbf176a5af Mon Sep 17 00:00:00 2001 From: Jared Hancock <jared@osticket.com> Date: Wed, 3 Jul 2013 18:02:37 -0500 Subject: [PATCH] Fix attachments posted to pipe.php - Handle decoding large base64 encoded attachments better - Avoid transcoding from one charset to the same - Avoid encoding attachments without a declared charset --- include/class.format.php | 3 +++ include/class.mailparse.php | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/class.format.php b/include/class.format.php index 10859d15a..ce39d5fbd 100644 --- a/include/class.format.php +++ b/include/class.format.php @@ -45,6 +45,9 @@ class Format { if($charset && in_array(strtolower(trim($charset)), array('default','x-user-defined','iso'))) $charset = 'ISO-8859-1'; + + if (strcasecmp($charset, $encoding) === 0) + return $text; $original = $text; if(function_exists('iconv') && $charset) diff --git a/include/class.mailparse.php b/include/class.mailparse.php index 3347451de..b1f57a6f5 100644 --- a/include/class.mailparse.php +++ b/include/class.mailparse.php @@ -202,9 +202,14 @@ class Mail_Parse { $file=array( 'name' => $filename, 'type' => strtolower($part->ctype_primary.'/'.$part->ctype_secondary), - 'data' => $this->mime_encode($part->body, $part->ctype_parameters['charset']) ); + if ($part->ctype_parameters['charset']) + $file['data'] = $this->mime_encode($part->body, + $part->ctype_parameters['charset']); + else + $file['data'] = $part->body; + if(!$this->decode_bodies && $part->headers['content-transfer-encoding']) $file['encoding'] = $part->headers['content-transfer-encoding']; -- GitLab