Skip to content

Commit f93b470

Browse files
committed
Fix bug #53377 (imap_mime_header_decode() doesn't ignore \t during long MIME
header unfolding).
1 parent d72ac07 commit f93b470

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

ext/imap/php_imap.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -4235,7 +4235,7 @@ PHP_FUNCTION(imap_mime_header_decode)
42354235
}
42364236

42374237
offset = end_token+2;
4238-
for (i = 0; (string[offset + i] == ' ') || (string[offset + i] == 0x0a) || (string[offset + i] == 0x0d); i++);
4238+
for (i = 0; (string[offset + i] == ' ') || (string[offset + i] == 0x0a) || (string[offset + i] == 0x0d) || (string[offset + i] == '\t'); i++);
42394239
if ((string[offset + i] == '=') && (string[offset + i + 1] == '?') && (offset + i < end)) {
42404240
offset += i;
42414241
}

ext/imap/tests/bug53377.phpt

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
--TEST--
2+
Bug #53377 (imap_mime_header_decode() doesn't ignore \t during long MIME header unfolding)
3+
--SKIPIF--
4+
<?php
5+
if (!extension_loaded("imap")) {
6+
die("skip imap extension not available");
7+
}
8+
?>
9+
--FILE--
10+
<?php
11+
$s = "=?UTF-8?Q?=E2=82=AC?=";
12+
$header = "$s\n $s\n\t$s";
13+
14+
var_dump(imap_mime_header_decode($header));
15+
--EXPECT--
16+
array(3) {
17+
[0]=>
18+
object(stdClass)#1 (2) {
19+
["charset"]=>
20+
string(5) "UTF-8"
21+
["text"]=>
22+
string(3) ""
23+
}
24+
[1]=>
25+
object(stdClass)#2 (2) {
26+
["charset"]=>
27+
string(5) "UTF-8"
28+
["text"]=>
29+
string(3) ""
30+
}
31+
[2]=>
32+
object(stdClass)#3 (2) {
33+
["charset"]=>
34+
string(5) "UTF-8"
35+
["text"]=>
36+
string(3) ""
37+
}
38+
}

0 commit comments

Comments
 (0)