diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2016-08-30 01:18:23 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2016-08-30 01:18:59 +0200 |
commit | ec8bbba9c66072cccbc9074ea3de90499c525a13 (patch) | |
tree | de7c621a1457c892b5e04da07f50379bd70a229a | |
parent | 2bfe926eb1ee57afb11a7872f0fcb5c4cc1e3ebc (diff) | |
parent | 4b45c0a9a7d48a69edba9e00270c49bbe17af4d1 (diff) | |
download | php-git-ec8bbba9c66072cccbc9074ea3de90499c525a13.tar.gz |
Merge branch 'PHP-7.0' into PHP-7.1
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | ext/iconv/iconv.c | 4 | ||||
-rw-r--r-- | ext/iconv/tests/bug72320.phpt | 14 |
3 files changed, 19 insertions, 2 deletions
@@ -24,6 +24,9 @@ PHP NEWS images). (cmb) . Fixed bug #68716 (possible resource leaks in _php_image_convert()). (cmb) +- iconv: + . Fixed bug #72320 (iconv_substr returns false for empty strings). (cmb) + - Intl: . Fixed bug #65732 (grapheme_*() is not Unicode compliant on CR LF sequence). (cmb) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 0d44936ea6..99a24d78bc 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -858,7 +858,7 @@ static php_iconv_err_t _php_iconv_substr(smart_str *pretval, } - if ((size_t)offset >= total_len) { + if ((size_t)offset > total_len) { return PHP_ICONV_ERR_SUCCESS; } @@ -2108,7 +2108,7 @@ PHP_FUNCTION(iconv_substr) err = _php_iconv_substr(&retval, ZSTR_VAL(str), ZSTR_LEN(str), offset, length, charset); _php_iconv_show_error(err, GENERIC_SUPERSET_NAME, charset); - if (err == PHP_ICONV_ERR_SUCCESS && ZSTR_LEN(str) > 0 && retval.s != NULL) { + if (err == PHP_ICONV_ERR_SUCCESS && ZSTR_LEN(str) >= 0 && retval.s != NULL) { RETURN_NEW_STR(retval.s); } smart_str_free(&retval); diff --git a/ext/iconv/tests/bug72320.phpt b/ext/iconv/tests/bug72320.phpt new file mode 100644 index 0000000000..0c83d33db0 --- /dev/null +++ b/ext/iconv/tests/bug72320.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #72320 (iconv_substr returns false for empty strings) +--SKIPIF-- +<?php +if (!extension_loaded('iconv')) die('skip ext/iconv required'); +?> +--FILE-- +<?php +var_dump(iconv_substr('', 0, 10, 'UTF-8')); +var_dump(iconv_substr('foo', 3, 10, 'UTF-8')); +?> +--EXPECT-- +string(0) "" +string(0) "" |