php7: redux of fix for issue #5488
authorPhilip Prindeville <redacted>
Thu, 25 Jan 2018 22:19:30 +0000 (15:19 -0700)
committerPhilip Prindeville <redacted>
Thu, 25 Jan 2018 22:19:30 +0000 (15:19 -0700)
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 <redacted>
lang/php7/Makefile
lang/php7/patches/1012-php_iconv_string-null-out-pointer.patch [moved from lang/php7/patches/1012-php_iconv_string-null-out-pointer with 51% similarity]

index f1f781fe41ee83e7f91432c1c25380be7cccea28..8b6f6fb50dbb8666d25e33c18cdd6141fc507635 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=php
 PKG_VERSION:=7.2.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de>
 
similarity index 51%
rename from lang/php7/patches/1012-php_iconv_string-null-out-pointer
rename to lang/php7/patches/1012-php_iconv_string-null-out-pointer.patch
index 5f71b7d707a96c659dd4bc9b491be8a47dff3916..6dfbe51ef9f9da0368b34fcf56b8dc46ff94fb3a 100644 (file)
@@ -1,4 +1,4 @@
-commit 8b6882d95dfe9096a22052bbff0c134b10932d20
+commit 31e53f07c26e5ac75ec2c2d99497439323dbdaf7
 Author: Philip Prindeville <philipp@redfish-solutions.com>
 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).
 
 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
 +++ 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,
@@ -20,7 +20,34 @@ index 35dafd4..bc7f3aa 100644
        /*
          This is not the right way to get output size...
          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);
  
        if (err != PHP_ICONV_ERR_SUCCESS) {
@@ -30,7 +57,7 @@ index 35dafd4..bc7f3aa 100644
                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) {
                RETVAL_STR(out_buffer);
        } else {
git clone https://git.99rst.org/PROJECT