summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2013-02-07 18:17:25 +0100
committerAleksander Machniak <alec@alec.pl>2013-02-08 08:58:51 +0100
commit24d7cc5dd187aa9f151e27eb376f4e7eba50f819 (patch)
treefc38d18f8282451beca87d31ca4624a90d0ccc46 /program
parent334d37eda07650c2fdf7af0b19ce1c279866d6d2 (diff)
Ignore file extension difference for text/plain attachments (#1488891)
Diffstat (limited to 'program')
-rw-r--r--program/steps/mail/get.inc6
1 files changed, 5 insertions, 1 deletions
diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index fddb40ae8..84e666fbe 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -121,7 +121,7 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) {
$valid = $file_extension && in_array($file_extension, (array)$extensions);
// 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') {
+ if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || $mimetype == 'text/plain') {
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
@@ -133,6 +133,10 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) {
$real_mimetype = rcube_mime::file_content_type($body, $part->filename, $mimetype, true, true);
list($real_ctype_primary, $real_ctype_secondary) = explode('/', $real_mimetype);
+ // accept text/plain with any extension
+ if ($real_mimetype == 'text/plain' && $real_mimetype == $mimetype)
+ $file_extension = 'txt';
+
// ignore differences in text/* mimetypes. Filetype detection isn't very reliable here
if ($real_ctype_primary == 'text' && strpos($mimetype, $real_ctype_primary) === 0)
$real_mimetype = $mimetype;