summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-03-13 11:03:21 +0100
committerAleksander Machniak <alec@alec.pl>2013-03-13 11:04:09 +0100
commit58993ffcbbfb8b362ebf9d088125fb73d7f6cbed (patch)
tree4389f39202f4429b40dcdb63ca184e6bc57fe1ab
parent097c544d98bbeee7d120af549116da57ee448ca5 (diff)
Fix HTML part detection for some specific message structures (#1488992)
-rw-r--r--CHANGELOG1
-rw-r--r--program/lib/Roundcube/rcube_message.php16
2 files changed, 10 insertions, 7 deletions
diff --git a/CHANGELOG b/CHANGELOG
index a7d64a751..954c6d86c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Fix HTML part detection for some specific message structures (#1488992)
- Don't show fake address - phishing prevention (#1488981)
- Fix forward as attachment bug with editormode != 1 (#1488991)
- Fix LIMIT/OFFSET queries handling on MS SQL Server (#1488984)
diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php
index 6a5851f76..6160c65da 100644
--- a/program/lib/Roundcube/rcube_message.php
+++ b/program/lib/Roundcube/rcube_message.php
@@ -210,18 +210,20 @@ class rcube_message
if (!$recursive) {
$level = explode('.', $part->mime_id);
- // Skip if level too deep or part has a file name
- if (count($level) > 2 || $part->filename) {
+ // Skip if part is an attachment
+ if ($this->is_attachment($part)) {
continue;
}
- // HTML part can be on the lower level, if not...
- if (count($level) > 1) {
- array_pop($level);
+ // Check if the part belongs to higher-level's alternative/related
+ while (array_pop($level) !== null) {
+ if (!count($level)) {
+ return true;
+ }
+
$parent = $this->mime_parts[join('.', $level)];
- // ... parent isn't multipart/alternative or related
if ($parent->mimetype != 'multipart/alternative' && $parent->mimetype != 'multipart/related') {
- continue;
+ continue 2;
}
}
}