]> granicus.if.org Git - php/commitdiff
MFH: fixed bug #53377 (imap_mime_header_decode() doesn't ignore \t during long
authorAdam Harvey <aharvey@php.net>
Mon, 13 Dec 2010 08:38:01 +0000 (08:38 +0000)
committerAdam Harvey <aharvey@php.net>
Mon, 13 Dec 2010 08:38:01 +0000 (08:38 +0000)
MIME header unfolding).

NEWS
ext/imap/php_imap.c
ext/imap/tests/bug53377.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 7d7335cce535c2e48219dfc07672c1b1a856e84b..25b2702bf3ef8fd91adbe6031b84a32bc0b0a906 100644 (file)
--- a/NEWS
+++ b/NEWS
     (Ilia)
   . Fixed bug #47435 (FILTER_FLAG_NO_RES_RANGE don't work with ipv6).
     (Ilia, valli at icsurselva dot ch)
+
+- IMAP extension:
+  . Fixed bug #53377 (imap_mime_header_decode() doesn't ignore \t during long
+    MIME header unfolding). (Adam)
     
 - Intl extension:
   . Fixed bug #53512 (NumberFormatter::setSymbol crash on bogus $attr values).
index 866c61e7038cab7becd60a9205b2103386d39796..12bf53a9a16ee0e82c8a20f91b62f19d17b638fa 100644 (file)
@@ -4243,7 +4243,7 @@ PHP_FUNCTION(imap_mime_header_decode)
                                        }
 
                                        offset = end_token+2;
-                                       for (i = 0; (string[offset + i] == ' ') || (string[offset + i] == 0x0a) || (string[offset + i] == 0x0d); i++);
+                                       for (i = 0; (string[offset + i] == ' ') || (string[offset + i] == 0x0a) || (string[offset + i] == 0x0d) || (string[offset + i] == '\t'); i++);
                                        if ((string[offset + i] == '=') && (string[offset + i + 1] == '?') && (offset + i < end)) {
                                                offset += i;
                                        }
diff --git a/ext/imap/tests/bug53377.phpt b/ext/imap/tests/bug53377.phpt
new file mode 100644 (file)
index 0000000..1a2173a
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+Bug #53377 (imap_mime_header_decode() doesn't ignore \t during long MIME header unfolding)
+--SKIPIF--
+<?php
+        if (!extension_loaded("imap")) { 
+                die("skip imap extension not available");  
+        }
+?>
+--FILE--
+<?php
+$s = "=?UTF-8?Q?=E2=82=AC?=";
+$header = "$s\n $s\n\t$s";
+
+var_dump(imap_mime_header_decode($header));
+--EXPECT--
+array(3) {
+  [0]=>
+  object(stdClass)#1 (2) {
+    ["charset"]=>
+    string(5) "UTF-8"
+    ["text"]=>
+    string(3) "€"
+  }
+  [1]=>
+  object(stdClass)#2 (2) {
+    ["charset"]=>
+    string(5) "UTF-8"
+    ["text"]=>
+    string(3) "€"
+  }
+  [2]=>
+  object(stdClass)#3 (2) {
+    ["charset"]=>
+    string(5) "UTF-8"
+    ["text"]=>
+    string(3) "€"
+  }
+}