Okay und mal wieder gibt’s hier einen Patch, um SquirrelMail von unnötigen Eval-Aufrufen zu bereinigen. Diesmal in dem Teil von SquirrelMail, der für das Dekodieren von MIME-kodierten Mails sorgt. Konkret geht es hierbei aber weniger um die MIME-Dekodierung selber als vielmehr um das Verarbeiten der Header-Daten.
Da ich aber zu SquirrelMail schon genug gesagt habe, lass ich es (ich bin es leid, mich diesbezüglich immer wieder Redundanz erzeugen zu müssen. Von daher: Hier ist der Patch:
--- mime.php 2010-05-20 16:42:58.000000000 +0200 +++ mime.php 2010-05-20 17:03:49.000000000 +0200 @@ -626,6 +626,16 @@ } /** + * Helper function for Header field Decoding + * + * This function decodes quoted-printable-escaped character sequences into + * their original byte values, i.e. from =40 into @ + */ +function decodeHeader_charDecode($m) { + return chr(hexdec($m[1])); +} + +/** * Decodes headers * * This functions decode strings that is encoded according to @@ -704,8 +714,7 @@ break; case 'Q': $replace = str_replace('_', ' ', $res[4]); - $replace = preg_replace('/=([0-9a-f]{2})/ie', 'chr(hexdec("\1"))', - $replace); + $replace = preg_replace_callback('/=([0-9a-f]{2})/i', 'decodeHeader_charDecode', $replace); if ($can_be_encoded) { // string is converted from one charset to another. sanitizing depends on $htmlsave $replace = charset_convert($res[2], $replace,$default_charset,$htmlsave); |
Die Änderung sollte soweit klar sein. Falls noch was dazu kommt, ergänze ich das noch. Bei einem weiteren kurzen Blick durch diese Datei ist mir aber nichts aufgefallen.