mirror of
https://github.com/php/php-src.git
synced 2025-01-13 06:24:18 +08:00
Bug 62462: Prevent multibyte characters from being split between the lines
Merged from https://github.com/php/php-src/pull/120
This commit is contained in:
parent
ab4f3d93e8
commit
18bb426587
@ -162,7 +162,10 @@ PHPAPI unsigned char *php_quot_print_encode(const unsigned char *str, size_t len
|
||||
lp = 0;
|
||||
} else {
|
||||
if (iscntrl (c) || (c == 0x7f) || (c & 0x80) || (c == '=') || ((c == ' ') && (*str == '\015'))) {
|
||||
if ((lp += 3) > PHP_QPRINT_MAXL) {
|
||||
if ((((lp+= 3) > PHP_QPRINT_MAXL) && (c <= 0x7f))
|
||||
|| ((c > 0x7f) && (c <= 0xdf) && ((lp + 3) > PHP_QPRINT_MAXL))
|
||||
|| ((c > 0xdf) && (c <= 0xef) && ((lp + 6) > PHP_QPRINT_MAXL))
|
||||
|| ((c > 0xef) && (c <= 0xf4) && ((lp + 9) > PHP_QPRINT_MAXL))) {
|
||||
*d++ = '=';
|
||||
*d++ = '\015';
|
||||
*d++ = '\012';
|
||||
@ -283,4 +286,4 @@ PHP_FUNCTION(quoted_printable_encode)
|
||||
* End:
|
||||
* vim600: sw=4 ts=4 fdm=marker
|
||||
* vim<600: sw=4 ts=4
|
||||
*/
|
||||
*/
|
17
ext/standard/tests/strings/bug62462.phpt
Normal file
17
ext/standard/tests/strings/bug62462.phpt
Normal file
@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Multibyte characters shouldn't be split by soft line break added by quoted_printable_encode - 4 byte character test
|
||||
--FILE--
|
||||
<?php
|
||||
echo quoted_printable_encode(str_repeat("\xc4\x85", 77));
|
||||
?>
|
||||
|
||||
==DONE==
|
||||
--EXPECT--
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=C4=85=
|
||||
=C4=85=C4=85=C4=85=C4=85=C4=85
|
||||
==DONE==
|
Loading…
Reference in New Issue
Block a user