From: Adam Harvey Date: Tue, 4 May 2010 11:56:59 +0000 (+0000) Subject: Fix for bug #48289 (iconv_mime_encode() quoted-printable scheme is broken). X-Git-Tag: php-5.2.14RC1~29 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a44f1c17bc3d1188962bb10e2621d6d46f4e7c3d;p=php Fix for bug #48289 (iconv_mime_encode() quoted-printable scheme is broken). Thanks to Hiroaki Kawai for the original patch. --- diff --git a/NEWS b/NEWS index 7b9a08b6e4..221532c884 100644 --- a/NEWS +++ b/NEWS @@ -66,6 +66,8 @@ PHP NEWS - Fixed bug #49723 (LimitIterator with empty SeekableIterator). (Etienne) - Fixed bug #49576 (FILTER_VALIDATE_EMAIL filter needs updating) (Rasmus) - Fixed bug #49267 (Linking fails for iconv). (Moriyosh) +- Fixed bug #48289 (iconv_mime_encode() quoted-printable scheme is broken). + (Adam, patch from hiroaki dot kawai at gmail dot com). - Fixed bug #43314 (iconv_mime_encode(), broken Q scheme). (Rasmus) - Fixed bug #23229 (syslog() truncates messages). (Adam) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 755426242f..b70c3df210 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -1217,7 +1217,7 @@ static php_iconv_err_t _php_iconv_mime_encode(smart_str *pretval, const char *fn prev_in_left = ini_in_left = in_left; ini_in_p = in_p; - for (out_size = char_cnt; out_size > 0;) { + for (out_size = (char_cnt - 2) / 3; out_size > 0;) { size_t prev_out_left; nbytes_required = 0; diff --git a/ext/iconv/tests/bug48289.phpt b/ext/iconv/tests/bug48289.phpt new file mode 100644 index 0000000000..fc2cd360b6 --- /dev/null +++ b/ext/iconv/tests/bug48289.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #48289 (iconv_mime_encode() quoted-printable scheme is broken) +--SKIPIF-- + +--FILE-- + 'Q', + 'input-charset' => 'UTF-8', + 'output-charset' => 'UTF-8', + 'line-length' => 30, +); + +echo iconv_mime_encode('Subject', $text, $options); +--EXPECT-- +Subject: =?UTF-8?Q?=E3=83=86?= + =?UTF-8?Q?=E3=82=B9?= + =?UTF-8?Q?=E3=83=88?= + =?UTF-8?Q?=E3=83=86?= + =?UTF-8?Q?=E3=82=B9?= + =?UTF-8?Q?=E3=83=88?=