php7: redux of fix for issue #5488
Upstream was a little premature on asking for a change and not vetting it. Here is the currently proposed fix. Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
This commit is contained in:
parent
74eecfebcc
commit
e1a4178de1
2 changed files with 32 additions and 5 deletions
|
@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=php
|
PKG_NAME:=php
|
||||||
PKG_VERSION:=7.2.1
|
PKG_VERSION:=7.2.1
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
|
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
commit 8b6882d95dfe9096a22052bbff0c134b10932d20
|
commit 31e53f07c26e5ac75ec2c2d99497439323dbdaf7
|
||||||
Author: Philip Prindeville <philipp@redfish-solutions.com>
|
Author: Philip Prindeville <philipp@redfish-solutions.com>
|
||||||
Date: Wed Jan 24 18:47:19 2018 -0700
|
Date: Wed Jan 24 18:47:19 2018 -0700
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Date: Wed Jan 24 18:47:19 2018 -0700
|
||||||
will always be NULL (and not require free()ing, obviously).
|
will always be NULL (and not require free()ing, obviously).
|
||||||
|
|
||||||
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
|
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
|
||||||
index 35dafd4..bc7f3aa 100644
|
index 35dafd4..4289242 100644
|
||||||
--- a/ext/iconv/iconv.c
|
--- a/ext/iconv/iconv.c
|
||||||
+++ b/ext/iconv/iconv.c
|
+++ b/ext/iconv/iconv.c
|
||||||
@@ -559,6 +559,8 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
@@ -559,6 +559,8 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||||
|
@ -20,7 +20,34 @@ index 35dafd4..bc7f3aa 100644
|
||||||
/*
|
/*
|
||||||
This is not the right way to get output size...
|
This is not the right way to get output size...
|
||||||
This is not space efficient for large text.
|
This is not space efficient for large text.
|
||||||
@@ -984,9 +986,6 @@ static php_iconv_err_t _php_iconv_strpos(size_t *pretval,
|
|
||||||
|
commit 3763c8f1645983b5abc37c60597e1ecc1bf89019
|
||||||
|
Author: Philip Prindeville <philipp@redfish-solutions.com>
|
||||||
|
Date: Thu Jan 25 14:18:00 2018 -0700
|
||||||
|
|
||||||
|
Always free out_buf in php_iconv_string()
|
||||||
|
|
||||||
|
diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c
|
||||||
|
index 4289242..807bb14 100644
|
||||||
|
--- a/ext/iconv/iconv.c
|
||||||
|
+++ b/ext/iconv/iconv.c
|
||||||
|
@@ -697,6 +697,7 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||||
|
iconv_close(cd);
|
||||||
|
|
||||||
|
if (result == (size_t)(-1)) {
|
||||||
|
+ zend_string_free(out_buf);
|
||||||
|
switch (errno) {
|
||||||
|
case EINVAL:
|
||||||
|
retval = PHP_ICONV_ERR_ILLEGAL_CHAR;
|
||||||
|
@@ -713,7 +714,6 @@ PHP_ICONV_API php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len,
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* other error */
|
||||||
|
- zend_string_free(out_buf);
|
||||||
|
return PHP_ICONV_ERR_UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -986,9 +986,6 @@ static php_iconv_err_t _php_iconv_strpos(size_t *pretval,
|
||||||
err = php_iconv_string(ndl, ndl_nbytes, &ndl_buf, GENERIC_SUPERSET_NAME, enc);
|
err = php_iconv_string(ndl, ndl_nbytes, &ndl_buf, GENERIC_SUPERSET_NAME, enc);
|
||||||
|
|
||||||
if (err != PHP_ICONV_ERR_SUCCESS) {
|
if (err != PHP_ICONV_ERR_SUCCESS) {
|
||||||
|
@ -30,7 +57,7 @@ index 35dafd4..bc7f3aa 100644
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2463,9 +2462,6 @@ PHP_NAMED_FUNCTION(php_if_iconv)
|
@@ -2465,9 +2462,6 @@ PHP_NAMED_FUNCTION(php_if_iconv)
|
||||||
if (err == PHP_ICONV_ERR_SUCCESS && out_buffer != NULL) {
|
if (err == PHP_ICONV_ERR_SUCCESS && out_buffer != NULL) {
|
||||||
RETVAL_STR(out_buffer);
|
RETVAL_STR(out_buffer);
|
||||||
} else {
|
} else {
|
Loading…
Reference in a new issue