diff options
author | Adam Harvey <aharvey@php.net> | 2010-12-13 08:38:01 +0000 |
---|---|---|
committer | Adam Harvey <aharvey@php.net> | 2010-12-13 08:38:01 +0000 |
commit | 75a9b76a3e5c84eca0994ecd68bf2e25baa28c5b (patch) | |
tree | 6ef0795523fb674cda8b7596bf0dedb128770394 /ext/imap | |
parent | e87fbccfd81a0589122fd50d82237353c65d91d2 (diff) | |
download | php-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.c | 2 | ||||
-rw-r--r-- | ext/imap/tests/bug53377.phpt | 38 |
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) "€" + } +} |