From b00cc4f2bb3b3bfc1312f3fe6e805f05716bc610 Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Fri, 31 Jan 2003 14:15:49 +0000 Subject: [PATCH] Fixed a mb_send_mail() bug that has been reported in php-i18n@lists.php.net See http://lists.php.net/article.php?group=php.i18n&article=427 --- ext/mbstring/mbfilter.c | 6 ++++-- ext/mbstring/mbstring.c | 14 ++++++++++++-- ext/mbstring/tests/mb_send_mail01.phpt | 4 ++-- ext/mbstring/tests/mb_send_mail02.phpt | 2 +- ext/mbstring/tests/mb_send_mail03.phpt | 2 +- ext/mbstring/tests/mb_send_mail04.phpt | 2 +- ext/mbstring/tests/mb_send_mail05.phpt | 2 +- ext/mbstring/tests/mb_send_mail06.phpt | 2 +- ext/mbstring/tests/mb_send_mail07.phpt | 2 +- 9 files changed, 24 insertions(+), 12 deletions(-) diff --git a/ext/mbstring/mbfilter.c b/ext/mbstring/mbfilter.c index 2d44c2be239..65f599aa952 100644 --- a/ext/mbstring/mbfilter.c +++ b/ext/mbstring/mbfilter.c @@ -7440,8 +7440,10 @@ mbfl_convert_encoding( if (filter1 == NULL) { return NULL; } - filter2->illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; - filter2->illegal_substchar = 0x3f; /* '?' */ + if (filter2 != NULL) { + filter2->illegal_mode = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; + filter2->illegal_substchar = 0x3f; /* '?' */ + } mbfl_memory_device_init(&device, string->len, (string->len >> 2) + 8 TSRMLS_CC); /* feed data */ diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 614d5bf8840..e40b7881aae 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2830,11 +2830,21 @@ PHP_FUNCTION(mb_send_mail) || orig_str.no_encoding == mbfl_no_encoding_pass) { orig_str.no_encoding = mbfl_identify_encoding_no(&orig_str, MBSTRG(current_detect_order_list), MBSTRG(current_detect_order_list_size) TSRMLS_CC); } - pstr = mbfl_convert_encoding(&orig_str, &conv_str, tran_cs TSRMLS_CC); + + pstr = NULL; + { + mbfl_string tmpstr; + + if (mbfl_convert_encoding(&orig_str, &tmpstr, tran_cs TSRMLS_CC) != NULL) { + tmpstr.no_encoding=mbfl_no_encoding_8bit; + pstr = mbfl_convert_encoding(&tmpstr, &conv_str, body_enc TSRMLS_CC); + efree(tmpstr.val); + } + } if (pstr != NULL) { message_buf = message = (char *)pstr->val; } else { - message = Z_STRVAL_PP(argv[2]); + message = estrndup(Z_STRVAL_PP(argv[2]), Z_STRLEN_PP(argv[2])); } } else { /* this is not really an error, so it is allowed. */ diff --git a/ext/mbstring/tests/mb_send_mail01.phpt b/ext/mbstring/tests/mb_send_mail01.phpt index 55798e9abcf..965c857f04d 100644 --- a/ext/mbstring/tests/mb_send_mail01.phpt +++ b/ext/mbstring/tests/mb_send_mail01.phpt @@ -28,11 +28,11 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: test neutral Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: BASE64 -test +dGVzdA== diff --git a/ext/mbstring/tests/mb_send_mail02.phpt b/ext/mbstring/tests/mb_send_mail02.phpt index 6d93fb3afcc..17a6cef899a 100644 --- a/ext/mbstring/tests/mb_send_mail02.phpt +++ b/ext/mbstring/tests/mb_send_mail02.phpt @@ -28,7 +28,7 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIGyhCIEphcGFuZXNl?= Mime-Version: 1.0 diff --git a/ext/mbstring/tests/mb_send_mail03.phpt b/ext/mbstring/tests/mb_send_mail03.phpt index 27a8402b60f..43ca36a8ac3 100644 --- a/ext/mbstring/tests/mb_send_mail03.phpt +++ b/ext/mbstring/tests/mb_send_mail03.phpt @@ -28,7 +28,7 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: test English Mime-Version: 1.0 diff --git a/ext/mbstring/tests/mb_send_mail04.phpt b/ext/mbstring/tests/mb_send_mail04.phpt index 05100018f83..2523351e124 100644 --- a/ext/mbstring/tests/mb_send_mail04.phpt +++ b/ext/mbstring/tests/mb_send_mail04.phpt @@ -28,7 +28,7 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: =?ISO-8859-15?Q?Pr=FCfung=20German?= Mime-Version: 1.0 diff --git a/ext/mbstring/tests/mb_send_mail05.phpt b/ext/mbstring/tests/mb_send_mail05.phpt index b36b41813e2..7eb232f68f3 100644 --- a/ext/mbstring/tests/mb_send_mail05.phpt +++ b/ext/mbstring/tests/mb_send_mail05.phpt @@ -31,7 +31,7 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: =?HZ-GB-2312?B?fnsyYlFpfn0gU2ltcGxpZmllZCBD?= =?HZ-GB-2312?B?aGluZXNl?= diff --git a/ext/mbstring/tests/mb_send_mail06.phpt b/ext/mbstring/tests/mb_send_mail06.phpt index b8dafe58ccc..e92bfd1c9e0 100644 --- a/ext/mbstring/tests/mb_send_mail06.phpt +++ b/ext/mbstring/tests/mb_send_mail06.phpt @@ -31,7 +31,7 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: =?BIG5?B?tPrF5yBUcmFkaXRpb25hbCBDaGluZXNl?= Mime-Version: 1.0 diff --git a/ext/mbstring/tests/mb_send_mail07.phpt b/ext/mbstring/tests/mb_send_mail07.phpt index 74c4af97b86..e7ad08254a6 100644 --- a/ext/mbstring/tests/mb_send_mail07.phpt +++ b/ext/mbstring/tests/mb_send_mail07.phpt @@ -31,7 +31,7 @@ Mime-Version: 1.0 Content-Type: text/plain; charset=%s Content-Transfer-Encoding: %s -test +dGVzdA== To: example@example.com Subject: =?ISO-2022-KR?B?GyQpQw5FVz06Ri4PIEtvcmVhbg8=?= Mime-Version: 1.0