Author: leithoff
Date: Fri Apr 15 10:50:02 2016
New Revision: 55752
URL: http://svn.stylite.de/viewvc/egroupware?rev=55752&view=rev
Log:
prevent possible endless recursion on decodeMailHeader
Modified:
trunk/egroupware/api/src/Mail/Html.php
Modified: trunk/egroupware/api/src/Mail/Html.php
URL: http://svn.stylite.de/viewvc/egroupware/trunk/egroupware/api/src/Mail/Html.php?rev=55752&r1=55751&r2=55752&view=diff
==============================================================================
--- trunk/egroupware/api/src/Mail/Html.php (original)
+++ trunk/egroupware/api/src/Mail/Html.php Fri Apr 15 10:50:02 2016
@@ -25,18 +25,18 @@
*
* @param string $_string -> part of an mailheader
* @param string $displayCharset the charset parameter specifies the character set to represent the result by (if iconv_mime_decode is to be used)
+ * @param integer $reclevel param to control recursive calls (to prevent endless recursion)
* @return string
*/
- static function decodeMailHeader($_string, $displayCharset='utf-8')
- {
-/*
+ static function decodeMailHeader($_string, $displayCharset='utf-8', $reclevel=0)
+ {
$maxreclevel=25;
if ($reclevel > $maxreclevel) {
error_log( __METHOD__.__LINE__." Recursion Level Exeeded ($reclevel) while decoding $_string ");
return $_string;
}
$reclevel++;
-*/
+
//error_log(__FILE__.','.__METHOD__.':'."called with $_string and CHARSET $displayCharset");
if(function_exists('imap_mime_header_decode'))
{
@@ -73,20 +73,10 @@
$openTags = substr_count($element->text,'?=');
if(preg_match('/\?=.+=\?/', $element->text) && $openTags>0 && $openTags==substr_count($element->text,'=?') && $element->text != $_string)
{
- $element->text = self::decodeMailHeader($element->text, $element->charset);
+ $element->text = self::decodeMailHeader($element->text, $element->charset, $reclevel);
$element->charset = $displayCharset;
}
- $translatedString = Api\Translation::convert($element->text,$element->charset);
-/* //try to be smart about concatenating
-error_log(__METHOD__.__LINE__.$translatedString);
-error_log(__METHOD__.__LINE__.$newString);
- if ($translatedString && $newString && strpos($translatedString,$newString)===0)
- {
- $newString = $translatedString;
- }
- else
-*/
- $newString .= $translatedString;
+ $newString .= Api\Translation::convert($element->text,$element->charset);
}
else
{
@@ -94,7 +84,7 @@
$convertAtEnd = true;
}
}
- if ($convertAtEnd) $newString = self::decodeMailHeader($newString,$displayCharset);
+ if ($convertAtEnd) $newString = self::decodeMailHeader($newString,$displayCharset,$reclevel);
return preg_replace('/([\000-\012\015\016\020-\037\075])/','',$newString);
}
elseif(function_exists(mb_decode_mimeheader))
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.