From 4c0cb96a4857860bb0249da0541dc19c1ee93a9e Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Sun, 07 Feb 2016 07:30:48 -0500
Subject: [PATCH] Enigma: Fix missing html/plain switch on multipart/signed messages (#1490649)
---
CHANGELOG | 1 +
program/lib/Roundcube/rcube_message.php | 8 ++++++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 24baad0..740f21b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
+- Enigma: Fix missing html/plain switch on multipart/signed messages (#1490649)
- Enigma: Disable format=flowed for signed plain text messages (#1490646)
- Enigma: Fix handling of encrypted + signed messages (#1490632)
- Enigma: Fix invalid boundary use in signed messages structure
diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php
index 3e95b2b..d21de34 100644
--- a/program/lib/Roundcube/rcube_message.php
+++ b/program/lib/Roundcube/rcube_message.php
@@ -339,6 +339,7 @@
$level = explode('.', $part->mime_id);
$depth = count($level);
+ $last = '';
// Check if the part belongs to higher-level's multipart part
// this can be alternative/related/signed/encrypted or mixed
@@ -348,9 +349,12 @@
return true;
}
- $parent = $this->mime_parts[join('.', $level)];
+ $parent = $this->mime_parts[join('.', $level)];
+ $max_delta = $depth - (1 + ($last == 'multipart/alternative' ? 1 : 0));
+ $last = $parent->mimetype;
+
if (!preg_match('/^multipart\/(alternative|related|signed|encrypted|mixed)$/', $parent->mimetype)
- || ($parent->mimetype == 'multipart/mixed' && $parent_depth < $depth - 1)) {
+ || ($parent->mimetype == 'multipart/mixed' && $parent_depth < $max_delta)) {
continue 2;
}
}
--
Gitblit v1.9.1