From 48ba4414b33c8982f8232b06f06d68f3213aa986 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 22 Oct 2014 14:29:44 +0200 Subject: Fix download of attachments that are part of TNEF message (#1490091) Rcube_message_part::body content should never be modified by code out of the rcube_message. Added convenient rcube_message::get_part_body() method, making rcube_message::get_part_content() deprecated. --- plugins/enigma/lib/enigma_driver_phpssl.php | 2 +- plugins/vcard_attachments/vcard_attachments.php | 2 +- plugins/zipdownload/zipdownload.php | 20 +++++++------------- 3 files changed, 9 insertions(+), 15 deletions(-) (limited to 'plugins') diff --git a/plugins/enigma/lib/enigma_driver_phpssl.php b/plugins/enigma/lib/enigma_driver_phpssl.php index 50af44762..fcd15db73 100644 --- a/plugins/enigma/lib/enigma_driver_phpssl.php +++ b/plugins/enigma/lib/enigma_driver_phpssl.php @@ -95,7 +95,7 @@ class enigma_driver_phpssl extends enigma_driver $fh = fopen($msg_file, "w"); if ($struct->mime_id) { - $message->get_part_content($struct->mime_id, $fh, true, 0, false); + $message->get_part_body($struct->mime_id, false, 0, $fh); } else { $this->rc->storage->get_raw_body($message->uid, $fh); diff --git a/plugins/vcard_attachments/vcard_attachments.php b/plugins/vcard_attachments/vcard_attachments.php index cf7e22d3a..74718be6f 100644 --- a/plugins/vcard_attachments/vcard_attachments.php +++ b/plugins/vcard_attachments/vcard_attachments.php @@ -65,7 +65,7 @@ class vcard_attachments extends rcube_plugin $attach_script = false; foreach ($this->vcard_parts as $part) { - $vcards = rcube_vcard::import($this->message->get_part_content($part, null, true)); + $vcards = rcube_vcard::import($this->message->get_part_body($part, true)); // successfully parsed vcards? if (empty($vcards)) { diff --git a/plugins/zipdownload/zipdownload.php b/plugins/zipdownload/zipdownload.php index edb8188cc..2e103ceb0 100644 --- a/plugins/zipdownload/zipdownload.php +++ b/plugins/zipdownload/zipdownload.php @@ -144,20 +144,14 @@ class zipdownload extends rcube_plugin } } - $disp_name = $this->_convert_filename($filename); + $disp_name = $this->_convert_filename($filename); + $tmpfn = tempnam($temp_dir, 'zipattach'); + $tmpfp = fopen($tmpfn, 'w'); + $tempfiles[] = $tmpfn; - if ($part->body) { - $orig_message_raw = $part->body; - $zip->addFromString($disp_name, $orig_message_raw); - } - else { - $tmpfn = tempnam($temp_dir, 'zipattach'); - $tmpfp = fopen($tmpfn, 'w'); - $imap->get_message_part($message->uid, $part->mime_id, $part, null, $tmpfp, true); - $tempfiles[] = $tmpfn; - fclose($tmpfp); - $zip->addFile($tmpfn, $disp_name); - } + $message->get_part_body($part->mime_id, false, 0, $tmpfp); + $zip->addFile($tmpfn, $disp_name); + fclose($tmpfp); } $zip->close(); -- cgit v1.2.3