From e3fdf31b0bf3b7b799ea25ba5ec14be194813e0b Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Thu, 1 Jul 2010 01:11:08 +0000 Subject: [PATCH] - Fixed bug #52211 (iconv() returns part of string on error) --- NEWS | 2 ++ ext/iconv/iconv.c | 5 ++++- ext/iconv/tests/bug52211.phpt | 13 +++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 ext/iconv/tests/bug52211.phpt diff --git a/NEWS b/NEWS index 698d8ae537..df2686a6a0 100644 --- a/NEWS +++ b/NEWS @@ -85,6 +85,8 @@ - Fixed PDO objects binary incompatibility. (Dmitry) +- Fixed bug #52211 (iconv() returns part of string on error). (Felipe) + ?? ??? 20??, PHP 5.3.3 - Upgraded bundled PCRE to version 8.01. (Ilia) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 07fb359a2b..40a03529bf 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -2357,9 +2357,12 @@ PHP_NAMED_FUNCTION(php_if_iconv) err = php_iconv_string(in_buffer, (size_t)in_buffer_len, &out_buffer, &out_len, out_charset, in_charset); _php_iconv_show_error(err, out_charset, in_charset TSRMLS_CC); - if (out_buffer != NULL) { + if (err == PHP_ICONV_ERR_SUCCESS && out_buffer != NULL) { RETVAL_STRINGL(out_buffer, out_len, 0); } else { + if (out_buffer != NULL) { + efree(out_buffer); + } RETURN_FALSE; } } diff --git a/ext/iconv/tests/bug52211.phpt b/ext/iconv/tests/bug52211.phpt new file mode 100644 index 0000000000..152aab839b --- /dev/null +++ b/ext/iconv/tests/bug52211.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #52211 (iconv() returns part of string on error) +--FILE-- + +--EXPECTF-- +Notice: iconv(): Detected an illegal character in input string in %s on line %d +bool(false) -- 2.49.0