summaryrefslogtreecommitdiff
path: root/ext/imap
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2010-12-13 08:38:01 +0000
committerAdam Harvey <aharvey@php.net>2010-12-13 08:38:01 +0000
commit75a9b76a3e5c84eca0994ecd68bf2e25baa28c5b (patch)
tree6ef0795523fb674cda8b7596bf0dedb128770394 /ext/imap
parente87fbccfd81a0589122fd50d82237353c65d91d2 (diff)
downloadphp-git-75a9b76a3e5c84eca0994ecd68bf2e25baa28c5b.tar.gz
MFH: fixed bug #53377 (imap_mime_header_decode() doesn't ignore \t during long
MIME header unfolding).
Diffstat (limited to 'ext/imap')
-rw-r--r--ext/imap/php_imap.c2
-rw-r--r--ext/imap/tests/bug53377.phpt38
2 files changed, 39 insertions, 1 deletions
diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c
index 866c61e703..12bf53a9a1 100644
--- a/ext/imap/php_imap.c
+++ b/ext/imap/php_imap.c
@@ -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
index 0000000000..1a2173a09b
--- /dev/null
+++ b/ext/imap/tests/bug53377.phpt
@@ -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) "€"
+ }
+}