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.