From d59a8d29d6ae877e9f56a0e3fe3d1068661a9473 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Mon, 29 Jul 2013 05:51:03 -0400
Subject: [PATCH] Validate all text attachments not only text/plain. This fixes invalid warning message for a case when pdf attachment is defined as text/html. See #1489267.

---
 program/steps/mail/get.inc |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index a27e788..3334caa 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -134,7 +134,7 @@
       $valid = $file_extension && in_array($file_extension, (array)$extensions) || !empty($_REQUEST['_mimeclass']);
 
       // 2. detect the real mimetype of the attachment part and compare it with the stated mimetype and filename extension
-      if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || $mimetype == 'text/plain') {
+      if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || stripos($mimetype, 'text/') === 0) {
         if ($part->body)  // part body is already loaded
           $body = $part->body;
         else if ($part->size && $part->size < 1024*1024)   // load the entire part if it's small enough
@@ -189,8 +189,8 @@
               rcube_label(array(
                 'name' => 'attachmentvalidationerror',
                 'vars' => array(
-                  'expected' => $mimetype . ($file_extension ? "(.$file_extension)" : ''),
-                  'detected' => $real_mimetype . ($extensions[0] ? "(.$extensions[0])" : ''),
+                  'expected' => $mimetype . ($file_extension ? " (.$file_extension)" : ''),
+                  'detected' => $real_mimetype . ($extensions[0] ? " (.$extensions[0])" : ''),
                 )
               )) .
               html::p(array('class' => 'rcmail-inline-buttons'),
@@ -232,7 +232,6 @@
       header("Content-Type: $mimetype");
       header("Content-Transfer-Encoding: binary");
     }
-
 
     // deliver part content
     if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) {

--
Gitblit v1.9.1