diff options
author | Torsten Zuehlsdorff <tz@FreeBSD.org> | 2017-06-21 10:24:17 +0000 |
---|---|---|
committer | Torsten Zuehlsdorff <tz@FreeBSD.org> | 2017-06-21 10:24:17 +0000 |
commit | b9da199a4fad37910e114f6f32b6fdc6736b1c7f (patch) | |
tree | 410eaf61c4851f8aa74b9d00de6f5dee7399b4d9 | |
parent | 0fb7d7b10a22b48200843143262fc6318d93fc2e (diff) | |
download | ports-b9da199a4fad37910e114f6f32b6fdc6736b1c7f.tar.gz ports-b9da199a4fad37910e114f6f32b6fdc6736b1c7f.zip |
MFH: r443708
lang/php70 and lang/php71: Parse multiple [PATH=] and [HOST=] sections properly
Adding a patch to fix bug #74738 in PHP 7.0 and 7.1:
https://bugs.php.net/bug.php?id=74738
Reported by: Philip Jocks <pj@netzkommune.de>
Approved by: ports-secteam (miwi)
Notes
Notes:
svn path=/branches/2017Q2/; revision=444024
-rw-r--r-- | lang/php70/Makefile | 2 | ||||
-rw-r--r-- | lang/php70/files/patch-main_php__ini.c | 31 | ||||
-rw-r--r-- | lang/php71/Makefile | 2 | ||||
-rw-r--r-- | lang/php71/files/patch-main_php__ini.c | 40 |
4 files changed, 73 insertions, 2 deletions
diff --git a/lang/php70/Makefile b/lang/php70/Makefile index 613fc17e7113..df7e21bfa55a 100644 --- a/lang/php70/Makefile +++ b/lang/php70/Makefile @@ -3,7 +3,7 @@ PORTNAME= php70 PORTVERSION= 7.0.20 -PORTREVISION?= 0 +PORTREVISION?= 1 CATEGORIES?= lang devel www MASTER_SITES= PHP/distributions DISTNAME= php-${PORTVERSION} diff --git a/lang/php70/files/patch-main_php__ini.c b/lang/php70/files/patch-main_php__ini.c new file mode 100644 index 000000000000..1d0224235439 --- /dev/null +++ b/lang/php70/files/patch-main_php__ini.c @@ -0,0 +1,31 @@ +--- main/php_ini.c.orig 2017-06-14 13:27:29 UTC ++++ main/php_ini.c +@@ -280,7 +280,7 @@ static void php_ini_parser_cb(zval *arg1 + size_t key_len; + + /* PATH sections */ +- if (zend_string_equals_literal_ci(Z_STR_P(arg1), "PATH")) { ++ if (!zend_binary_strncasecmp(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), "PATH", sizeof("PATH") - 1, sizeof("PATH") - 1)) { + key = Z_STRVAL_P(arg1); + key = key + sizeof("PATH") - 1; + key_len = Z_STRLEN_P(arg1) - sizeof("PATH") + 1; +@@ -291,7 +291,7 @@ static void php_ini_parser_cb(zval *arg1 + TRANSLATE_SLASHES_LOWER(key); + + /* HOST sections */ +- } else if (zend_string_equals_literal_ci(Z_STR_P(arg1), "HOST")) { ++ } else if (!zend_binary_strncasecmp(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), "HOST", sizeof("HOST") - 1, sizeof("HOST") - 1)) { + key = Z_STRVAL_P(arg1); + key = key + sizeof("HOST") - 1; + key_len = Z_STRLEN_P(arg1) - sizeof("HOST") + 1; +@@ -328,7 +328,9 @@ static void php_ini_parser_cb(zval *arg1 + zend_hash_init(Z_ARRVAL(section_arr), 8, NULL, (dtor_func_t) config_zval_dtor, 1); + entry = zend_hash_str_update(target_hash, key, key_len, §ion_arr); + } +- active_ini_hash = Z_ARRVAL_P(entry); ++ if (Z_TYPE_P(entry) == IS_ARRAY) { ++ active_ini_hash = Z_ARRVAL_P(entry); ++ } + } + } + break; diff --git a/lang/php71/Makefile b/lang/php71/Makefile index 39ef9a7daac1..0faa5258300e 100644 --- a/lang/php71/Makefile +++ b/lang/php71/Makefile @@ -3,7 +3,7 @@ PORTNAME= php71 PORTVERSION= 7.1.6 -PORTREVISION?= 0 +PORTREVISION?= 1 CATEGORIES?= lang devel www MASTER_SITES= PHP/distributions DISTNAME= php-${PORTVERSION} diff --git a/lang/php71/files/patch-main_php__ini.c b/lang/php71/files/patch-main_php__ini.c new file mode 100644 index 000000000000..c951481c791b --- /dev/null +++ b/lang/php71/files/patch-main_php__ini.c @@ -0,0 +1,40 @@ +--- main/php_ini.c.orig 2017-06-14 13:23:49 UTC ++++ main/php_ini.c +@@ -280,7 +280,7 @@ static void php_ini_parser_cb(zval *arg1 + size_t key_len; + + /* PATH sections */ +- if (zend_string_equals_literal_ci(Z_STR_P(arg1), "PATH")) { ++ if (!zend_binary_strncasecmp(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), "PATH", sizeof("PATH") - 1, sizeof("PATH") - 1)) { + key = Z_STRVAL_P(arg1); + key = key + sizeof("PATH") - 1; + key_len = Z_STRLEN_P(arg1) - sizeof("PATH") + 1; +@@ -291,7 +291,7 @@ static void php_ini_parser_cb(zval *arg1 + TRANSLATE_SLASHES_LOWER(key); + + /* HOST sections */ +- } else if (zend_string_equals_literal_ci(Z_STR_P(arg1), "HOST")) { ++ } else if (!zend_binary_strncasecmp(Z_STRVAL_P(arg1), Z_STRLEN_P(arg1), "HOST", sizeof("HOST") - 1, sizeof("HOST") - 1)) { + key = Z_STRVAL_P(arg1); + key = key + sizeof("HOST") - 1; + key_len = Z_STRLEN_P(arg1) - sizeof("HOST") + 1; +@@ -328,7 +328,9 @@ static void php_ini_parser_cb(zval *arg1 + zend_hash_init(Z_ARRVAL(section_arr), 8, NULL, (dtor_func_t) config_zval_dtor, 1); + entry = zend_hash_str_update(target_hash, key, key_len, §ion_arr); + } +- active_ini_hash = Z_ARRVAL_P(entry); ++ if (Z_TYPE_P(entry) == IS_ARRAY) { ++ active_ini_hash = Z_ARRVAL_P(entry); ++ } + } + } + break; +@@ -638,7 +640,7 @@ int php_init_config(void) + } + if (!debpath[0]) { + /* empty string means default builtin value +- to allow "/foo/php.d:" or ":/foo/php.d" */ ++ to allow "/foo/phd.d:" or ":/foo/php.d" */ + debpath = PHP_CONFIG_FILE_SCAN_DIR; + } + lenpath = (int)strlen(debpath); |