]> granicus.if.org Git - php/commitdiff
Fix bug #53377 (imap_mime_header_decode() doesn't ignore \t during long MIME
authorAdam Harvey <aharvey@php.net>
Tue, 23 Nov 2010 10:34:44 +0000 (10:34 +0000)
committerAdam Harvey <aharvey@php.net>
Tue, 23 Nov 2010 10:34:44 +0000 (10:34 +0000)
header unfolding).

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

index 61f48684b473b596aa4e970164e001cf24a6353a..5a7f968813bf13bad1001a1a80d8cebf048dd64f 100644 (file)
@@ -4235,7 +4235,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) "€"
+  }
+}