Fixed issue #705

Change-Id: I602a88d24c2a482e6bebb5d6d7f4830843afec42
Signed-off-by: SJ <sj@acts.hu>
This commit is contained in:
SJ
2016-09-10 22:16:35 +02:00
parent 802c811a70
commit db1a202c5c
42 changed files with 1074 additions and 342 deletions

View File

@ -14,9 +14,9 @@
*
* @category Zend
* @package Zend_Mail
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Part.php 24759 2012-05-05 02:58:55Z adamlundrigan $
* @version $Id$
*/
@ -25,6 +25,16 @@
*/
require_once 'Zend/Mime/Decode.php';
/**
* @see Zend_Mail_Header_HeaderName
*/
require_once 'Zend/Mail/Header/HeaderName.php';
/**
* @see Zend_Mail_Header_HeaderValue
*/
require_once 'Zend/Mail/Header/HeaderValue.php';
/**
* @see Zend_Mail_Part_Interface
*/
@ -34,7 +44,7 @@ require_once 'Zend/Mail/Part/Interface.php';
/**
* @category Zend
* @package Zend_Mail
* @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Mail_Part implements RecursiveIterator, Zend_Mail_Part_Interface
@ -134,17 +144,19 @@ class Zend_Mail_Part implements RecursiveIterator, Zend_Mail_Part_Interface
}
if (isset($params['raw'])) {
Zend_Mime_Decode::splitMessage($params['raw'], $this->_headers, $this->_content);
Zend_Mime_Decode::splitMessage($params['raw'], $this->_headers, $this->_content, "\r\n");
} else if (isset($params['headers'])) {
if (is_array($params['headers'])) {
$this->_headers = $params['headers'];
$this->_validateHeaders($this->_headers);
} else {
if (!empty($params['noToplines'])) {
Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $null);
Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $null, "\r\n");
} else {
Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $this->_topLines);
Zend_Mime_Decode::splitMessage($params['headers'], $this->_headers, $this->_topLines, "\r\n");
}
}
if (isset($params['content'])) {
$this->_content = $params['content'];
}
@ -566,4 +578,26 @@ class Zend_Mail_Part implements RecursiveIterator, Zend_Mail_Part_Interface
$this->countParts();
$this->_iterationPos = 1;
}
/**
* Ensure headers do not contain invalid characters
*
* @param array $headers
* @param bool $assertNames
*/
protected function _validateHeaders(array $headers, $assertNames = true)
{
foreach ($headers as $name => $value) {
if ($assertNames) {
Zend_Mail_Header_HeaderName::assertValid($name);
}
if (is_array($value)) {
$this->_validateHeaders($value, false);
continue;
}
Zend_Mail_Header_HeaderValue::assertValid($value);
}
}
}