From: Felipe Pena Date: Thu, 1 Jul 2010 01:11:08 +0000 (+0000) Subject: - Fixed bug #52211 (iconv() returns part of string on error) X-Git-Tag: php-5.4.0alpha1~191^2~1221 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3fdf31b0bf3b7b799ea25ba5ec14be194813e0b;p=php - Fixed bug #52211 (iconv() returns part of string on error) --- 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)