[eGroupWare-svn] r55752 - /trunk/egroupware/api/src/Mail/Html.php

[email protected]
Newsgroups gmane.comp.web.egroupware.cvs
Message-ID <[email protected]>
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.